socket.io в существующем проекте node.js - PullRequest
1 голос
/ 07 апреля 2019

Я хочу внедрить обновления в реальном времени в мое приложение, которое имеет серверную часть node.js.Я хочу использовать socket.io для этого, и я понимаю библиотеку, которая должна быть реализована.Однако у меня уже работает сервер node.js:

app.listen(process.env.PORT, () => {

    console.log("Server is up and running")

})

Вопрос довольно прост: можно ли использовать один и тот же сервер с одним и тем же портом для прослушивания соединений socket.io, или мне следуетзапустить это полностью на другом сервере или просто открыть другой порт для этого?Потому что в примерах я часто вижу, что он слушает http.См. Ниже.

То, что я обычно вижу (этот пример взят из этого поста )

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

http.listen(3000, function () {
    console.log('listening on *:3000');
});

Теперь, если бы я использовал тот же сервер и порт, как могЯ также слушаю входящие запросы socket.io или посылаю их клиентам?Могу ли я просто продолжать слушать с app.listen и будет ли он также подключаться к socket.io?

1 Ответ

0 голосов
/ 07 апреля 2019

Короче говоря да, подключение к сокету начинается как запрос http на тот же адрес и порт.

Протокол WebSocket был разработан, чтобы хорошо работать с существующим Web инфраструктуры. Как часть этого принципа разработки, протокол спецификация определяет, что соединение WebSocket начинает свою жизнь как HTTP-соединение, гарантирующее полную обратную совместимость с мир до WebSocket. Переключение протокола с HTTP на WebSocket упоминается как рукопожатие WebSocket.

В этот момент HTTP-соединение разрывается и заменяется Соединение WebSocket через то же базовое соединение TCP / IP. Соединение WebSocket использует те же порты, что и HTTP (80) и HTTPS (443), по умолчанию.

https://websocket.org/aboutwebsocket.html

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