Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   WS-server на два порта, как правильно? (https://javascript.ru/forum/node-js-io-js/85005-ws-server-na-dva-porta-kak-pravilno.html)

win32s 02.03.2023 15:08

WS-server на два порта, как правильно?
 
Есть такая задача - программа на компьютере собирает и передает некоторые данные на сервер, а там они выводятся пользователю в браузер. Пробую сделать веб-сокет сервер на ноде, но поскольку в ней нет опыта, вышло что-то такое

var WebSocketServer = new require('ws');
const WebSocket = require('ws');
var clients = {};

var wss_soft = new WebSocketServer.Server({port: 7777});
var wss_adm = new WebSocketServer.Server({port: 6666});

var admin_sock;

wss_adm.on('connection', function(ws) {
  console.log("Connection new admin !");
  admin_sock = ws;

  ws.on('message', function(message) {
    console.log('Adminka received message ');
  });

  ws.on('close', function() {
    console.log('Connection close admin');
  });
});

wss_soft.on('connection', function(ws) {
  var id = Math.random();
  var fid = 0;
  clients[id] = ws;
  console.log("Connection new " + id);

  ws.on('message', function(message) 
  {
    //console.log('Received message ' + message);
	      // Отправляем сообщение в wss_adm
      wss_adm.clients.forEach(function each(client) {
        if (client.readyState === WebSocket.OPEN) 
		{
          client.send(message);
        }
      });
  });

  ws.on('close', function() {
    console.log('Connection close ' + id);
    delete clients[id];
  });
});


Суть, что программа стучит в один порт , а тот принимает сообщение и отправляет в другой (где уже читает браузерный javascript, т.е. админ панель). Подозреваю, что это не особо правильно.

И где можно взять документацию по этому модулю WS ? Методы, функции ?

Nexus 02.03.2023 21:32

А зачем вам, собственно, 2 ws-сервера, если можно сделать все на 1-м?

win32s 03.03.2023 01:51

Цитата:

Сообщение от Nexus (Сообщение 550974)
если можно сделать все на 1-м?

Там надо тогда различать коннект, от софта и от админ-панели, а я не знаю, как.


Часовой пояс GMT +3, время: 05:05.