個人比較菜還望多多指教。目前我們開發(fā)了一套微信的應(yīng)用程序,由于原有程序是放到windows2012的服務(wù)器上,所以考慮就把workerman放到了另一臺linux服務(wù)器上。有幾個疑問望大神們幫忙下。例如我使用WebSocket協(xié)議對外提供服務(wù),在原有程序上開發(fā)的聊天室遠程連接workerman的服務(wù)器,在微信應(yīng)用的程序我會判定是否是這個聊天室的成員,包括是否為管理還是普通用戶,我在想一個問題,就是微信應(yīng)用的服務(wù)器發(fā)送到聊天服務(wù)器上是用json進行數(shù)據(jù)傳輸?shù)?,如果進行全體禁言時候微信應(yīng)用的服務(wù)器會判斷是否為管理是否為當前房間的用戶,如果按照簡單的開發(fā)實例在谷歌瀏覽器里輸入:
// 假設(shè)服務(wù)端ip為127.0.0.1
ws = new WebSocket("ws://127.0.0.1:2346");
ws.onopen = function() {
alert("連接成功");
ws.send('tom');
alert("給服務(wù)端發(fā)送一個字符串:tom");
};
ws.onmessage = function(e) {
alert("收到服務(wù)端的消息:" + e.data);
};
有用戶使用惡意行為進行json數(shù)據(jù)進行更改的話,那么裝有workerman的服務(wù)器應(yīng)該如何判斷惡意更改的用戶是否為管理是否是這個聊天室的成員?
還有就是如果用戶知道json數(shù)據(jù)格式后,這些隨意更改房間號接收其他房間的信息或者進行其他踢人的功能,如何避免惡意使用?
我的想法是用戶發(fā)送信息到workerman服務(wù)器后,在微信應(yīng)用的服務(wù)器接收數(shù)據(jù)時候進行判斷是否有相關(guān)的權(quán)限但是感覺還是有些行不通。還望大神不吝賜教。
多謝大神 ! 看了你發(fā)的這個鏈接如大夢初醒一般。太方便了!多謝?。。?br /> 剛接觸了兩天看完了workerman GatewayWorker框架還沒看。
大神求指教,GatewayClient和GatewayWorker不是在同一臺服務(wù)器上,GatewayClient接收數(shù)據(jù)怎么寫?
能否給個例子?
大神求指教,我把GatewayWorker當做一個單向的推送通道,在客戶端連接上之后在服務(wù)器上的Event.php 寫的直接獲取客戶端的client_id
public static function onConnect($client_id)
{
// 向當前client_id發(fā)送數(shù)據(jù)
$data = array(
'type' => 'login',
'client_id'=>$client_id
);
Gateway::sendToClient($client_id,json_encode($data));
}
然后發(fā)送給客戶端,客戶端接收到信息后發(fā)送到應(yīng)用后端GatewayClient 進行分組 綁定UID 發(fā)送登錄信息。
由于所建立的是單向的推送通道 服務(wù)器上的event.php只寫了用戶連接上之后發(fā)送的業(yè)務(wù)邏輯其他的業(yè)務(wù)邏輯都是在另一個應(yīng)用上寫的。但是又碰到難點了,
Gateway::getClientInfoByGroup($roomid);
foreach($clients_list as $tmp_client_id=>$item)
{
$clients_list = $item;
}
獲得json
Object {781ade1d0b560000001a: null, 781ade1d0b5700000012: null}
client_id對應(yīng)的clientname都是為null,如果在服務(wù)器上可以session用戶名,這作為單項通道如何session存儲用戶名呢?迷茫了求助