Я предполагаю, что это невозможно, но хотелось спросить, если это так. Если я хочу предоставить веб-страницу с информацией о статусе, я хочу использовать WebSockets для перемещения данных с сервера в браузер. Но мои опасения связаны с тем, что на сервере будет работать большое количество браузеров. Могу ли я передавать всем клиентам, а не отправлять отдельные сообщения каждому клиенту?
Могу ли я транслировать все клиенты WebSocket
Ответ 1
WebSockets использует TCP, который является точкой-точкой и не поддерживает поддержку широковещания.
Ответ 2
Не знаете, как настроить клиент/сервер, но вы всегда можете просто хранить на сервере коллекцию всех подключенных клиентов, а затем перебирать их и отправлять сообщение.
Простой пример с использованием 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);
});
});
});
Ответ 3
Да, можно передавать сообщения нескольким клиентам.
В Java,
@OnMessage
public void onMessage(String m, Session s) throws IOException {
for (Session session : s.getOpenSessions()) {
session.getBasicRemote().sendText(m);
}
}
и здесь объясняется. https://blogs.oracle.com/PavelBucek/entry/optimized_websocket_broadcast.
Ответ 4
Как отмечалось в других ответах, 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);
});
};
Ответ 5
Да, вы можете и есть много серверов сокетов, написанных на разных языках сценариев, которые это делают.
Ответ 6
Это действительно зависит от сервера. Вот пример того, как это было сделано с помощью Tomcat7:
Пример сервлетов Tomcat 7 для веб-сервлетов
и объяснение того, как он построил здесь.
Ответ 7
В пространстве имен Microsoft.Web.WebSockets имеется функция WebSocketCollection с возможностью широковещательной рассылки. Посмотрите на сборку в Nuget. Это имя Microsoft.WebSockets.