【问题标题】:Avoid creating onMessage function per WS client避免为每个 WS 客户端创建 onMessage 函数
【发布时间】:2017-11-16 00:02:15
【问题描述】:

按照ws 的说明创建 WebSocket 服务器:

const WebSocket = require('ws');

const wss = new WebSocket.Server({ port: 8080 });

wss.on('connection', function connection(ws) {
  ws.on('message', function incoming(message) {
    console.log('received: %s', message);
  });

  ws.send('something');
});

会为每个客户端创建一个名为 incoming 的 onMessage 回调,对吗?

想象一下拥有 200 万客户。这段代码将创建 200 万个函数。有没有办法避免这种情况?像这样的东西会很棒:

const WebSocket = require('ws');

const wss = new WebSocket.Server({ port: 8080 });

wss.on('message', function incoming(ws, message) {
  // Access to ws object
  console.log('received: %s', message);
});

【问题讨论】:

  • 我觉得你反应过度了......
  • 那么我说它为每个客户创建一个功能是错的吗?

标签: javascript node.js websocket


【解决方案1】:

怎么样:

const WebSocket = require('ws');

const wss = new WebSocket.Server({ port: 8080 });

function handleMessage(message) {
  console.log('received: %s', message);	
}

wss.on('message', handleMessage);

【讨论】:

  • 事件message不是由WebSocket.Server发出的
  • + 代码不正确,应该是wss.on('message', handleMessage);
  • 很公平。代码已更改。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-05
  • 2012-11-28
  • 2017-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多