这是 app.js
var express = require('express');
var app = express(),
http = require('http'),
server = http.createServer(app),
io = require('socket.io').listen(server);
app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});
io.sockets.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
app.listen(8888);
console.log('daemon start on http://localhost:8888');
这是 index.html
<script src="/socket.io.js"></script>
<script>
var socket = io.connect('http://localhost:8888');
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
});
</script>
在命令行发布 app.js
以后。控制台也显示了 :socket.io started
然后我在浏览器敲入: http://localhost:8888
却提示 io
未定义… 各们看倌,请问一下这是啥问题?
我运行了一下你这个app.js(将index.html设为空)是没有问题的,问题可能出在你的那个index.html里面。也可以把index.html贴出来看看!
<script src="/socket.io.js"></script>
var socket = io.connect(‘http://localhost:8888’); socket.on(‘news’, function (data) { console.log(data); socket.emit(‘my other event’, { my: ‘data’ }); });
这是我的index.html. 在最上面引用了socket.io.js(src="/socket.io.js");这个文件我放在和index.html同一个目录的。 为啥出现<script>就显示不出来了?
socket.io.js不是你放在那个目录下的,是自动生成的。 所以你路径错了。 只要你正确安装了socket.io 这样写就是对的。 <script src="/socket.io/socket.io.js"></script>