既然我们已经有了express服务器,为什么还要为Socket.io创建新的http实例



我是SocketIO的新手,我参考了许多关于套接字的博客和文档,我们首先需要创建一个HTTP服务器,然后像这样将套接字连接到它上-

var app = express();
var httpServer = http.createServer(app);
var io = socketio.listen(httpServer);

第二行是什么意思?为什么我们要创建一个额外的HTTP服务器,而express(web框架(已经定义好了?因为我从来没有为我的RESTful应用程序创建过一个新的HTTP实例,所以我只听了下面这样的express实例-

var express = require('express');
var app = express();
app.listen(8000);

提前感谢!

如果您希望socket.io在与web服务器相同的端口上运行,那么您可以使用相同的服务器实例。如果希望socket.io在其他端口上运行,则在该端口上创建一个新的服务器实例,供socket.io使用。

Socket.io使用与Express相同的端口和服务器实例运行得很好,所以除非您有特定的理由在不同的端口上运行它,否则这是配置它的常用方式。

socket.io的一些代码示例单独显示了它,因此他们必须创建一个http服务器供其使用。

使用Express时,您可以获得如下服务器实例:

const express = require('express');
const socketio = require('socket.io');
const app = express();
const server = app.listen(8000);
const io = socketio(server);

最新更新