当我需要socket.io
包时,为什么我必须通过整个http
包裹?
也许是因为socket.io必须与我的http服务器连接?
这是代码:
var port = process.env.PORT || 8080;
var express = require("express");
var app = new express();
var http = require("http").Server(app);
var io = require("socket.io")(http);
app.use(express.static(__dirname + "/public"));
// listen for events
io.on("connection", function () { // first arguments is the name of the event
console.log("User connected via socket.io");
})
http.listen(port, function () {
console.log("Server started");
答案 0 :(得分:2)
每个WebSocket连接都以http连接开始。
因此,在您的情况下,您将套接字服务器连接到现有的http服务器(与您的快速应用程序相同)。
但你可以有一个独立的套接字服务器,就像:
var io = require('socket.io')(5000);
在这种情况下,套接字服务器将作为单独的服务器运行。
如果您尝试实现的是网站内的websocket连接,聊天或其他方式,最好将其附加到快递中,这样您就可以访问所有req / res数据