现有node.js项目中的socket.io

时间:2019-04-06 23:06:15

标签: node.js express socket.io

我希望在具有node.js后端的应用程序中实现实时更新。我想为此使用socket.io,并且我了解需要实现的库。但是,我已经在运行一个node.js服务器:

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

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

})

问题很简单:是否可以使用具有相同端口的同一台服务器侦听socket.io连接,还是应该将其完全在另一台服务器上运行还是为此打开另一个端口?因为我在示例中经常看到的是它监听http。见下文。

我通常看到的内容(此示例来自this post

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 :(得分:0)

简而言之,是的,套接字连接在相同的地址和端口上以http请求开始。

  

WebSocket协议旨在与现有Web很好地配合使用   基础设施。作为该设计原则的一部分,该协议   规范定义WebSocket连接开始于   HTTP连接,以确保与   WebSocket之前的世界。从HTTP到WebSocket的协议切换是   称为WebSocket握手。

     

此时,HTTP连接断开,并被替换为   通过同一基础TCP / IP连接进行的WebSocket连接。的   WebSocket连接使用与HTTP(80)和HTTPS(443)相同的端口,   默认情况下。

https://websocket.org/aboutwebsocket.html