Socket.io无法摆脱“io未定义”的错误

不能得到socket.io工作,总是得到错误ReferenceError: io is not defined

服务器代码:

 express = require('express'); var socket = require('socket.io') app = express(); var io = socket.listen(app); app.get('/room', function (req, res) { res.render('room.ejs') }); io.sockets.on('connection', function (client) { console.log('Client connected...') }); app.listen(process.env.PORT || 17336); 

客户代码:

 <script src="localhost:17336/socket.io/socket.io.js"></script> <script>var socket = io.connect('http://localhost:17336')</script> 

这里是我的网站的目录结构:
(使其在WebMatrix中)

 Site |__iisnode |__node_modules |__.bin |__ejs |__express |__socket.io |__public |__views |__room.ejs (Client code is here) |__favicon.ico |__robots.txt |__server.js (Server code is here) |__web.config 

这是因为localhost:17336/socket.io/socket.io.js不可用。 我猜你的socket.io服务器没有启动,因为你使用Express 2.0语法,但安装了Express 3.0。

Express 3要求你首先实例化一个http.Server以附加socket.io。 下面是我如何做到这一点:

 var express = require('express'); var app = express() , http = require('http') , server = http.createServer(app) , io = require('socket.io').listen(server); 

我不太了解socket.io,但从字面上看错误消息,看起来localhost:17336/socket.io/socket.io.js不是将符号io导入客户端。 那么下一行是不可能的,因为io尚未定义。

你应该在浏览器中打开这个socket.io.js文件并读取它,以确定它确实定义了一个名为io的variables。