2017-05-12 61 views
0

我一直在压缩编码使用socket.io实时通信ExpressJS网站,我用的是同一个端口始终我的ExpressJS网站和socket.io端口可以使用相同的端口吗?

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 niqqa: http://localhost:3000`) 
}) 

是否安全/健康的做法是使用同一端口的WebSocket的和两个快递服务器。会导致任何问题吗?

回答

2

安全/健康的做法是使用相同的端口为websocket和express服务器。

这是安全的。为Express服务器和socket.io连接使用相同的端口是正常和预期的情况。所有的socket.io连接都以http请求开始,因此socket.io只是挂钩你现有的web服务器,并寻找特定类型的传入请求来打开socket.io连接,并处理该特定请求。所有其他请求通常由您的Express服务器处理。

webSocket协议(socket.io使用的)是专门为此设计的,因为有一些环境(如安全密集的企业环境),其中端口80以外的端口无法使用为网络流量。这样,webSockets可以通过端口80运行,而无需为它们创建全新的主机和DNS名称。他们可以使用与您的Web服务器相同的服务器。

它会导致任何问题吗?

在高规模的环境中,有可能会使用不同的主机或服务器的工作负载的不同部分单独的服务器进程规模的原因,因而是可期望单独socket.io将常规网络请求连接到不同的主机上。这仍然可以通过使用像nginx这样的代理在相同的端口80上完成,该代理可以将不同类型的请求引导到不同的主机或不同的服务器进程。但是,对于不需要此类缩放的情况,在Express和socket.io连接中使用相同的Web服务器没有缺点。

+0

非常感谢你的回答,它清除了我所有的疑惑:) – Satonamo

相关问题