我假设这是不可能的,但想要问以防万一.如果我想提供状态信息网页,我想使用WebSockets将数据从服务器推送到浏览器.但我担心的是大量浏览器对服务器的影响.我可以向所有客户端广播,而不是向每个客户端发送离散消息吗?
nos*_*nos 20
WebSockets使用TCP,它是点对点的,不提供广播支持.
Nic*_*fal 14
不确定您的客户端/服务器是如何设置的,但您始终可以在服务器中保留所有连接客户端的集合 - 然后迭代每个客户端/服务器并发送消息.
使用Node的Websocket库的一个简单示例:
服务器代码
var WebSocketServer = require('websocket').server;
var clients = [];
var socket = new WebSocketServer({
httpServer: server,
autoAcceptConnections: false
});
socket.on('request', function(request) {
var connection = request.accept('any-protocol', request.origin);
clients.push(connection);
connection.on('message', function(message) {
//broadcast the message to all the clients
clients.forEach(function(client) {
client.send(message.utf8Data);
});
});
});
Run Code Online (Sandbox Code Playgroud)
正如其他答案所述,WebSockets不支持多播,但看起来'ws'模块为您维护一个连接客户端列表,因此很容易迭代它们.来自文档:
var WebSocketServer = require('ws').Server
, wss = new WebSocketServer({ port: 8080 });
wss.broadcast = function broadcast(data) {
wss.clients.forEach(function each(client) {
client.send(data);
});
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26692 次 |
| 最近记录: |