新手请教socket.io问题
发布于 3年前 作者 nodesam 1702 次浏览 最后一次编辑是 1年前

这是 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 未定义… 各们看倌,请问一下这是啥问题?

4 回复

楼主的 html 文件没弄出来… 建议先参照 markdown 的语法把排版弄好, 然后对照下这里, 看下 <script> 标签有没有漏 http://socket.io/#how-to-use 特别是排版啊…

我运行了一下你这个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>

回到顶部