javascript - socket.io 和express 有问题

标签 javascript node.js sockets

这是我的 Jade 文件:

doctype html
html
    head
        meta(charset="UTF-8")
        title
        script(src="/socket.io/socket.io.js")
        script.
            var socket = io.connect('http://localhost:3000');
            socket.on('news', function (data) {
                console.log(data);
                socket.emit('my other event', { my: 'data' });
            });
    body
        hello world

这是我的 app.js

var app = require('express')()
var server = require('http').Server(app)
var io = require('socket.io')(server);
app.listen(3000)
app.get('/', function (req, res) {
    res.render('index.jade')
})    
io.on('connection', function (socket) {
    socket.emit('news', { hello: 'world' });
    socket.on('my other event', function (data) {
        console.log(data);
    });
});

Socket.io 不起作用,因为如果我尝试获取

http://localhost:3000/socket.io/socket.io.js

Node 服务器响应:

Cannot GET /socket.io/socket.io.js

我找到了这个question/answer但没有帮助。也许是由于我的模块版本:

{
  "name": "venti",
  "version": "0.0.0",
  "description": "",
  "main": "app.js",
  "dependencies": {
    "socket.io": "^1.0.6",
    "express": "^4.6.1",
    "jade": "^1.4.2"
  },
  "devDependencies": {},
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

最佳答案

我复制了你的代码。我也遇到同样的错误。

我刚刚更改了这一行

var server = require('http').Server(app)

var server = app.listen(3000);

并且成功了。请务必删除您已有的 app.listen(3000)

关于javascript - socket.io 和express 有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24856121/

相关文章:

javascript - 使用 React 测试库监视功能组件内的函数

javascript - 如何使用 HTML、CSS 和/或 Javascript 显示证明树?

javascript - 如何通过express发送API响应

sockets - 客户端/服务器套接字重新连接

客户端关闭套接字后,C# tcp 异步监听器卡在我的 on_receive 回调中

javascript - 获取所有标题并递归创建树

javascript 音频对象与 HTML5 音频标签

node.js - sequelize 如何在 Model.update 中引用实例

javascript - 如何使用时区将以毫秒为单位的时间转换为不同的本地时间

javascript - 使用 NodeJS 的文件路径问题