http-сервер не отвечает на websocket
Я не могу заставить мой http-сервер отвечать на запросы websocket.Как мне правильно слушать эти события?На моем сервере работает SPA, и я хотел бы попробовать использовать веб-сокеты для постоянной отправки обновленной информации из файла клиенту.Я успешно сделал это с SSE, но мне любопытно насчет веб-сокетов.
Мой server.js имеет следующее
const http = require('http');
const WebSocket = require('ws');
var server = http.createServer(function(request, response) {
request.on('error', (err) => {
console.error(err.stack);
});
});
server.listen(8001);
const wss = new WebSocket.Server({ server });
wss.on('connection', function connection(ws) {
ws.on('message', function message(msg) {
console.log(msg);
});
});
});
my client.js
var wsClient = ()=>{
const ws = new WebSocket('ws:'+serverip+'/WSindexJSON'); // this server is set through XHR request
ws.onopen = function(e) {
console.log("Connection established");
};
ws.addEventListener('open', () => {
// Send a message to the WebSocket server
ws.send('Hello!');
});
console.log("ws open",ws)
ws.addEventListener('message', event => {
// The `event` object is a typical DOM event object, and the message data sent
// by the server is stored in the `data` property
console.log('Received:', event.data);
});
}
Я могу видеть клиентскую веб-розетку, созданную в сетевых инструментах разработчика Chrome, но ничего не происходит на сервере.Нужно ли создавать веб-сокет на стороне сервера?
Я видел другой пример, когда сервер прослушивает событие обновления.Я попробовал это безуспешно.
server.on('upgrade', function upgrade(request, socket, head) {
const pathname = url.parse(request.url).pathname;
console.log('server upgrade event websocket', pathname)
if (pathname === '/WSindexJSON') {
wss.handleUpgrade(request, socket, head, function done(ws) {
wss.emit('connection', ws, request);
});
} else {
socket.destroy();
}
});
Я также попробовал другой модуль веб-сокета const WebSocketServer = require('websocket').server;
и столкнулся с теми же вопросами.