Node.js с экспресс-выдачей и сообщением веб-сокета во время рукопожатия WebSocket: неожиданный код ответа: 200 - PullRequest
0 голосов
/ 26 ноября 2018

Поэтому я пытаюсь настроить веб-сайт, который также имеет веб-сокеты, где http-сервер и веб-сокет прослушивают один и тот же порт:

const WebSocket = require('ws');
var express = require('express');
var app = express();


wss = new WebSocket.Server({server : app});

app.get('/', function(req, res){

    res.send('hello world!');
});


wss.on('connection', function connection(ws) {
  ws.on('message', function incoming(message) {
    console.log('received: %s', message);
  });

  ws.send('some text');
});


app.listen(8080, function(){

    console.log('app started');
});

Если я затем загружаю веб-сайт серверов в chrome-браузер меня приветствует "привет мир!"Все идет нормально.Но если я открываю веб-консоль и пытаюсь подключиться с помощью

var exampleSocket = new WebSocket("ws://192.10.10.30:8080");

, я получаю следующее сообщение об ошибке:

Соединение WebSocket с 'ws: //192.10.10.30: 8080 /'fail: Ошибка во время рукопожатия WebSocket: неожиданный код ответа: 200

Сначала я подумал: нужно ли явно объявить http-сервер?

Но я прочитал этот пост Служите WebSocket и HTTP-серверу по одному адресу на Node.js , и http-сервер явно не был объявлен.Пожалуйста помоги мне с этим.

1 Ответ

0 голосов
/ 26 ноября 2018

Вы передаете экземпляр приложения Express как server, который должен быть экземпляром сервера HTTP / HTTPS.Такой экземпляр возвращается app.listen:

var app = express();
var server = app.listen(8080, function(){
    console.log('app started');
});

wss = new WebSocket.Server({server : server}); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...