我正在尝试将socket.io和express.js挂钩在一起:
var socket = require('./socket_chat/socket.js'); var express = require('express'), app = module.exports.app = express(); var io = require('socket.io').listen(app); app.use(express.static(__dirname + '/app')); io.sockets.on('connection', socket);
在线:var io = require('socket.io').listen(app);
我收到一个错误:
Error: You are trying to attach socket.io to an expressrequest handler function. Please pass a http.Server instance.
有关此错误的SO/google似乎没有任何内容......
你应该使用http
模块:
var http = require('http'); var express = require('express'), app = module.exports.app = express(); var server = http.createServer(app); var io = require('socket.io').listen(server); //pass a http.Server instance server.listen(80); //listen on port 80 //now you can use app and io
您可以在文档中找到更多详细信息:http://socket.io/docs/#using-with-express-3/4
您可以在不使用http
模块的情况下进行操作
app.listen返回可用于socket.io的服务器实例
const express = require('express'); const app = express(); const server = app.listen(port, () => { console.log("Listening on port: " + port); }); const io = require('socket.io')(server);