Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 我的ExpressJS网站和socket.io端口可以使用相同的端口吗?_Node.js_Sockets_Express_Socket.io - Fatal编程技术网

Node.js 我的ExpressJS网站和socket.io端口可以使用相同的端口吗?

Node.js 我的ExpressJS网站和socket.io端口可以使用相同的端口吗?,node.js,sockets,express,socket.io,Node.js,Sockets,Express,Socket.io,我一直在编写使用socket.io进行实时通信的ExpressJS网站,我总是使用相同的端口 const request = require('request') const express = require('express') const app = express() const server = require('http').Server(app) const io = require('socket.io')(server) server.listen(3000, () =

我一直在编写使用socket.io进行实时通信的ExpressJS网站,我总是使用相同的端口

const request = require('request')
const express = require('express')
const app = express()
const server = require('http').Server(app)
const io = require('socket.io')(server)
    server.listen(3000, () => {
  console.log(`Server started: http://localhost:3000`)
})
websocket和express服务器使用同一端口是否安全/健康。会不会有什么问题

websocket和express服务器使用同一端口是否安全/健康

它是安全的。对于Express服务器和socket.io连接,使用相同的端口是正常和预期的情况。所有socket.io连接都是从http请求开始的,所以socket.io只是挂接现有的web服务器,并查找特定类型的传入请求以打开socket.io连接,然后处理该特定请求。所有其他请求都由Express服务器正常处理

webSocket协议(socket.io使用的)是专门为此设计的,之所以这样做是为了允许这样做,是因为有些环境(如安全性很高的公司环境)不能将端口80以外的端口用于web流量。这样,WebSocket就可以在端口80上运行,而不必为它们创建一个全新的主机和DNS名称。他们可以使用与web服务器相同的服务器

会不会有什么问题

没有


在高规模环境中,可能存在规模原因,需要为服务器工作负载的不同部分使用单独的主机或单独的服务器进程,因此可能需要将socket.io连接与常规web请求分离到不同的主机上。这仍然可以通过使用类似nginx的代理(可以将不同类型的请求定向到不同的主机或不同的服务器进程)使用相同的端口80来完成。但是,对于不需要这种扩展的情况,在Express和socket.io连接中使用相同的web服务器没有任何缺点。

非常感谢您的回答,它消除了我所有的疑问:)