这是我的玉文件:
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"
}
答案 0 :(得分:1)
我复制了你的代码。我也有同样的错误。
我刚刚改变了这一行
var server = require('http').Server(app)
到
var server = app.listen(3000);
它有效。请务必删除app.listen(3000)
已有的内容。