socket.io远程客户端不能正常工作

我正尝试将本地计算机上的Chrome浏览器连接到使用socket.io的远程节点服务器。 我用expressjs服务所有的文件离开我的节点服务器,所以我有一个公共目录与html和js文件(我创build了一个符号链接到node.modules我从npm下的socket.io文件)。

我遇到的问题是,当Chrome拉我的index.html我得到以下错误:

未捕获的ReferenceError:require未定义socket.io.js:12未捕获的ReferenceError:io未定义

我尝试了像其他几个职位的CDN,但这导致了另一个问题。 许多post主张这种方法,所以我不知道为什么它不解决nodejs的东西。 有任何想法吗?

以下是我的index.html的样子:

<html> <head> </head> <body> <script src="http://nodeserver:8080/socket.io/lib/socket.io.js"></script> <script> var socket = io.connect('http://nodeserver:8080'); socket.on('', function (data) { console.log(data); socket.emit('update checkins', { my: 'data' }); }); </script> <h2>Test Page</h2> </body> </html> 

我的服务器代码如下所示:

  var express = require('express'), app = express(), server = require('http').createServer(app), io = require('socket.io').listen(server); // Get the environment variables we need. var ipaddr = process.env.VCAP_APP_HOST || 'myserver.com'; var port = process.env.PORT || 8080; app.configure(function() { app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(app.router); app.use(express.static(__dirname + '/public')); }); // set up the RESTful API, handler methods are defined in api.js var api = require('./controller/api.js'); app.get('/foursq', api.list); // Set Socket.io io.sockets.on('connection', function (socket) { console.log('Socket created...'); socket.emit('welcome', {welcome: 'you'}); socket.on('update checkins', function (msg) { socket.broadcast.emit('checkins', api.list); }); }); // And start the app on that interface (and port). app.listen(port, ipaddr, function () { console.log('%s: Foursquare Node server started on %s:%d ...', Date(Date.now()), ipaddr, port); }); 

问题是我有原始代码在应用程序对象上侦听,但是当我更新代码来添加套接字时,我忽略了将其更改为server.listen,如下所示:

 server.listen(port, ipaddr, function () { console.log('%s: Foursquare Node server started on %s:%d ...', Date(Date.now()), ipaddr, port); }); 

这允许我简单地把脚本包括如下,而不必复制任何东西比利指出:

 <script src="/socket.io/socket.io.js"></script>