ng-websocket 和 ws:客户端发送成功但没有接收

Posted

技术标签:

【中文标题】ng-websocket 和 ws:客户端发送成功但没有接收【英文标题】:ng-websocket and ws: client sends successfully but doesn't receive 【发布时间】:2015-04-20 13:11:54 【问题描述】:

我的angularjs客户端websocketserver可以正常发送到服务器,但是从服务器发送到客户端时,客户端没有注册事件。

我在客户端使用 angular-websockets,在我的 express.js 服务器上使用 ws

这是我的代码。

服务器

var port = process.env.PORT || 3002;
var server = http.createServer(app); // app = express
server.listen(port);
var socketComs = require('./lib/socketcoms').connect(server);    
var connect = function(server) 

      var wss = new WebSocketServer(
        server: server 
      );

      wss.on('connection', function(ws) 

        console.log("websocket connection open");

        ws.on('message', function incoming(message) 
          console.log('received', message); // THIS WORKS FINE
        );

        var id = setInterval(function() 
          ws.send('pong', 'data 123', function(err) 
            console.log('sent pong', err); // THIS IS NEVER CAUGHT BY CLIENT, err = clean

          );
        , 2000); // Pong is never received

      );

    ;

客户

var connect = function() 
      ws.$on('$open', function() 
        console.log('wow its working');

        ws.$emit('message', 'some message');

      );

      ws.$on('pong', function(data) 
        console.log('yes', data);
      );

      ws.$on('$close', function(data) 
        console.log('wss closed');
      );
    ;

谁能看出发生了什么问题?

【问题讨论】:

【参考方案1】:

我正在使用带有 php 套接字的 ng-websocket,我遇到了同样的问题。 我刚刚打开了 ng-websocket.js 和..猜猜是什么? “ping”和“pong”事件不存在! “传入”事件称为“$message”...... 这是从服务器获取数据的方法:

ws.$on('$message', function (response) 
            console.log("DATA FROM SERVER", response);

【讨论】:

我刚刚了解到“pong”事件是您从服务器发送的自定义事件:在第 135 行我们有 var decoded = JSON.parse(message.data); me.$$fireEvent(decoded.event, decoded.data); 所以您可以在服务器响应中设置事件属性,然后从您的控制器ws.$on('customEvent', function (response) console.log("DATA FROM SERVER", response);因为它触发了两个事件,所以我决定使用“$message”事件并从ng-socket.js中删除自定义一个

以上是关于ng-websocket 和 ws:客户端发送成功但没有接收的主要内容,如果未能解决你的问题,请参考以下文章

使用 ws 发送自定义事件

JAVA - SSL - 客户端证书

运行形式 javaws - jakarta.ws.rs.client 在第一个之后没有发送请求?客户端缓存?

我写的websocket推送例子,每隔5秒服务器向客户端浏览器发送消息(node.js和浏览器)

在线客服~~

使用 WS 安全性在 WCF .NET 中向 Java Web 服务发送请求