socket.io和express有问题

时间:2014-07-21 00:08:09

标签: javascript node.js sockets

这是我的玉文件:

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

节点服务器响应:

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"
}

1 个答案:

答案 0 :(得分:1)

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

我刚刚改变了这一行

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

var server = app.listen(3000);

它有效。请务必删除app.listen(3000)已有的内容。