Кто-нибудь пробовал работать с 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;
пожалуйста.Помогите.Большое спасибо.