gateway 除了sendtoall 能够推送消息,其他的都不行

刘强
use \GatewayWorker\Lib\Store;
use \GatewayWorker\Lib\Gateway;
class Event
{
    /_ 连接服务 _/
    public static function onConnect($client_id){

    }
   /_  有消息_/
   public static function onMessage($client_id, $message) {
        $b = Gateway::sendToCurrentClient('123456'); //  无法推送信息
       $b = Gateway::sendToClient($client_id,'123456'); //  无法推送信息
        $c = Gateway::sendToAll('456');   // 可以 推送信息

       return ;
}

是不是有什么地方,需要设置一下

3412 3 0
3个回答

walkor

收不到可能是客户端问题,可以tcpdump抓包看下是否真的没发送,workerman手册有抓包方法

  • 暂无评论
刘强

客户端发送了,数据,客户能够收到,用 tcpdump 测试了也能够发包成功! 就是客户端收不到

<script type="text/javascript">

    WEB_SOCKET_SWF_LOCATION = "/swf/WebSocketMain.swf";
    WEB_SOCKET_DEBUG = true;
    var ws, name;

    // 连接服务端
    function connect() {
       // 创建websocket
       ws = new WebSocket("ws://"+document.domain+":7272");

       ws.onopen = function(){
           var login_data = JSON.stringify({"type":"login","client_name":name,"uid":2,'username':name,'logo':23,'app_type':1});
           ws.send(login_data);
       };
       // 当有消息时根据消息类型显示不同信息
       ws.onmessage = function(e){
           alert(123);    /
       };
       ws.onclose = function() {
          console.log("连接关闭,定时重连");
          connect();
       };
       ws.onerror = function() {
          console.log("出现错误");
       };
    } 

  </script>
  • 暂无评论
walkor

打开浏览器console自己调试下客户端吧

  • 暂无评论
年代过于久远,无法发表回答
🔝