目的:網(wǎng)頁js發(fā)起ws請求鏈接服務(wù)器,ws經(jīng)過處理后調(diào)用 sendMessageByUid TCP鏈路發(fā)送數(shù)據(jù)給智能設(shè)備,等待智能設(shè)備響應(yīng)后將響應(yīng)結(jié)果返回網(wǎng)頁客戶端。
目前問題:debug模式運(yùn)行觀察,sendMessageByUid 已經(jīng)運(yùn)行,但是沒有向設(shè)備下發(fā)任何數(shù)據(jù)。
如何智能設(shè)備數(shù)據(jù)返回網(wǎng)頁客戶端,思路也還不是很明確。。望大神指點(diǎn)下
目前做法是這樣的
網(wǎng)頁客戶端
<script type="text/javascript">
var ws;
function connect() {
ws = new WebSocket("ws://127.0.0.1:5678");
ws.onopen = function() {
ws.send('tom');
};
ws.onmessage = function(e) {
alert("收到服務(wù)端的消息:" + e.data);
};
}
</script>
服務(wù)端
use Workerman\Worker;
use Workerman\Lib\Timer;
require_once './Workerman/Autoloader.php';
/*****************************************************************************************************/
$tcp_worker = new Worker("tcp://0.0.0.0:2346");
$tcp_worker->count = 4;
/*****************************************************************************************************/
/*****************************************************************************************************/
$ws_worker = new Worker('websocket://0.0.0.0:5678');
$ws_worker->count = 1;
// 當(dāng)有客戶端發(fā)來消息時(shí)執(zhí)行的回調(diào)函數(shù)
$ws_worker->onMessage = function($connection, $data)use($ws_worker)
{
//為簡單起見,UID直接用m10001代替,下同
sendMessageByUid('m10001','01 02 03 04 05 06 07 08 09');
};
/*****************************************************************************************************/
$tcp_worker->uidConnections = array();
$tcp_worker->onConnect = function($connection)
{
//
};
// 當(dāng)收到客戶端發(fā)來的數(shù)據(jù)后返回hello $data給客戶端
$tcp_worker->onMessage = function($connection, $data)
{
//簡單起見,直接uid為m10001
$connection->uid = "m"."10001";
$tcp_worker->uidConnections = $connection;
// 這里如何想ws客戶端返回信息
};
// 針對(duì)uid推送數(shù)據(jù)
function sendMessageByUid($uid, $message)
{
global $tcp_worker;
if(isset($tcp_worker->uidConnections))
{
$connection = $tcp_worker->uidConnections;
$connection->send($message);
return true;
}
return false;
}
// 運(yùn)行
Worker::runAll();
嗯,建議用gatewayworker,多協(xié)議通訊很容易實(shí)現(xiàn),支持多進(jìn)程多服務(wù)器部署。
workerman也能做,手冊這里有例子:http://doc3.workerman.net/worker-development/listen.html 。
這個(gè)例子只能單進(jìn)程
你好,按照您的方法試了一下,sendMessageByUid('m10001','01 02 03 04 05 06 07 08 09')方法沒有發(fā)送到硬件網(wǎng)關(guān)上面。請問一下您是如何解決的?謝謝