Socket.io错误挂钩到express.js

 刘丹小宝0 发布于 2022-12-31 18:32

我正在尝试将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似乎没有任何内容......

2 个回答
  • 你应该使用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

    2022-12-31 18:33 回答
  • 您可以在不使用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);
    

    2022-12-31 18:34 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有