【问题标题】:Node Websockets Broadcast not working节点 Websockets 广播不起作用
【发布时间】:2017-01-20 23:24:37
【问题描述】:

目前我在 Node.js 中启动的超级简单的 websocket 设置似乎无法正常运行“广播”问题。这是我第一次使用 websockets,所以我可能遗漏了一些很明显的东西,但是在网上搜索了一段时间后,我无法找到解决方案。

基本上我只是想能够将一些 json 推送到所有当前连接的客户端。

我可以确认该套接字正在工作,因为当我在 ws://localhost:3000 进行连接时,我能够在“连接”块中看到“ws.send”上的静态连接字符串,并看到多个如果我与多个客户端连接,客户端会从广播方法中注销。

任何关于我可能遗漏的帮助将不胜感激,

var WebSocketServer = require('uws').Server;
var wss = new WebSocketServer({ port: 3000 }); // ws://localhost:3000

// Static test var
var test_message = {
    'test': 'Response',
    'test2': 'Response2'
};

// Broadcast to all.
wss.broadcast = function broadcast(data) {
  wss.clients.forEach(function each(client) {
    console.log('IT IS GETTING INSIDE CLIENTS');
    console.log(client);

    // The data is coming in correctly
    console.log(data);
    client.send(data);
  });
};

wss.on('connection', function(ws) {
   ws.on('message', function(message) {
     wss.broadcast(test_message);
     console.log('Received: ' + message);
   });

   // TODO This is static just to check that the connection is properly working
   ws.send('You successfully connected to the websocket.');
});

【问题讨论】:

  • 它似乎在我的情况下工作。可以分享一下客户端代码吗?
  • 现在我只是使用 chrome 扩展来测试套接字,我没有编写客户端。我正在使用的扩展名为“Smart Websocket Client”,无法看到将消息推送到该客户端响应部分的广播。感谢您的帮助!

标签: node.js websocket


【解决方案1】:

我使用Smart Websocket Client 测试了您的代码。你的代码很好。如果你广播的数据只有string,那么你可以在UI中看到回复,但是对于javascriptobject,客户端不会显示,虽然你可以在Chrome Developer Tools看到回复为Binary Frames (opcode = 2)

这种行为背后的原因是 ws.send() 方法支持普通字符串、类型化数组或 blob,但发送类型化数组和 blob 会导致客户端接收到的帧为二进制帧(操作码 = 2) .

你可以试试JSON.stringifyobject

wss.on('connection', function(ws) {
   ws.on('message', function(message) {
     wss.broadcast(JSON.stringify(test_message));
     console.log('Received: ' + message);
   });

   ws.send('You successfully connected to the websocket.');
});

【讨论】:

  • 嗯,有道理。非常感谢您的帮助,为什么我可以在控制台日志中看到该对象但在 UI 的广播中看不到该对象是有道理的。
猜你喜欢
  • 2015-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多