Socket.io监听与HTTP相同的端口是不是很好?

时间:2017-10-12 13:40:41

标签: node.js websocket socket.io

我的问题是当WebSocket和HTTP监听同一个端口时,这会有问题吗? WebSocket是否会降低HTTP服务器的速度,反之亦然?

1 个答案:

答案 0 :(得分:0)

不,它不应该导致问题。它们需要在同一个端口上运行,但端口不必显式为端口80(这是默认的HTTP端口)。无论您的Node HTTP服务器监听什么,Socket.io都会收听。以下代码来自Socket.io网站。如您所见,服务器和Socket.io都在端口3000上侦听。

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

app.get('/', function(req, res){
  res.sendFile(__dirname + '/index.html');
});

io.on('connection', function(socket){
  console.log('a user connected');
});

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

这不应该导致问题,因为毕竟它是必需的。唯一的另一种选择是合并I帧或允许跨源请求。但是,取决于什么样的Socket.io应用程序和多少连接并发连接决定了它的效率。因此它可能会或可能不会减慢服务器速度。除非你有数百万的连接和发射,否则速度可能不应成为问题。