我希望在具有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吗?
答案 0 :(得分:0)
简而言之,是的,套接字连接在相同的地址和端口上以http请求开始。
WebSocket协议旨在与现有Web很好地配合使用 基础设施。作为该设计原则的一部分,该协议 规范定义WebSocket连接开始于 HTTP连接,以确保与 WebSocket之前的世界。从HTTP到WebSocket的协议切换是 称为WebSocket握手。
此时,HTTP连接断开,并被替换为 通过同一基础TCP / IP连接进行的WebSocket连接。的 WebSocket连接使用与HTTP(80)和HTTPS(443)相同的端口, 默认情况下。