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:客户端发送成功但没有接收的主要内容,如果未能解决你的问题,请参考以下文章
运行形式 javaws - jakarta.ws.rs.client 在第一个之后没有发送请求?客户端缓存?