Динамически изменить URL веб-сокета в соответствии с сервером - PullRequest
0 голосов
/ 06 октября 2018

Кто-нибудь пробовал работать с WebSocket?как динамически изменить URL-адрес WebSocket при развертывании?Я использую WS npm для серверной части с узлом и экспрессом.

Это мой код на стороне клиента для WebSocket с использованием API WebSocket html5.

мой URL-адрес WebSocket в настоящее время находится на localhost,это точно не сработает при развертывании.

const socket = new WebSocket(`ws://localhost:8080/${userID}`);

socket.onopen = function() {
  // ! from local storage or cookies get the user information
  console.log('open client');
};

socket.onmessage = function(event) {
  console.log(event);
};

socket.onclose = function() {
  console.log('client close');
};

вот код для пакета WS npm.

const WebSocket = require('ws');

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

const clientsId = {}; // ! client ids

wss.on('connection', (ws, req) => {
  // ! gets the parameters of the url
  const param = req.url;

  // ! parse the url to removed /
  const userId = param
    .split('')
    .slice(1, param.split('').length)
    .join('');

  // ! take the userId making it as a key
  // ! then the current socket connection will be the users value
  clientsId[userId] = ws;

  // ! every message will invoke this function
  // ! the incoming message are stringfy need to parse
  ws.on('message', (incomingMsg) => {
    // ! parsing the incoming msg
    incomingMsg = JSON.parse(incomingMsg);
    // ! from the incoming msg get the paired ID
    const clientPairedId = incomingMsg.pairId;
    // ! gets the socket connection from the clientsId object using the paired Id from incoming msg
    const socketPerClient = clientsId[clientPairedId];
    // ! if socketPerClient in not null
    if (socketPerClient) {
      // ! using the value from socketPerClient get the send method and use it to send the data
      socketPerClient.send(
        JSON.stringify({
          name: incomingMsg.userID,
          msg: incomingMsg.msg,
          senderId: incomingMsg.senderId,
        })
      );
      return;
    }
  });

  ws.on('close', function close() {
    console.log('disconnected server', ws.readyState);
  });
});

module.exports = wss;

пожалуйста.Помогите.Большое спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...