最近,我一直在试验 Node.js 和 Socket.io。成功地,我已经能够实现这些,但只能在本地主机上。现在我想在我的专用服务器上使用这个功能。我在自己的家中托管我的服务器,我无法让节点和套接字在本地主机之外运行。这样做的重要性在于,我可以在测试我的站点时使用两台不同的计算机。这是我的代码如下:
app.js:
var app = require('express')()
, server = require('http').createServer(app)
, io = require('socket.io').listen(server);
server.listen(80);
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);
});
});
index.html:
<script src="http://localhost:8080/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('http://localhost:8080');
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
});
</script>
这些是直接从 socket.io 站点获取的样本。现在它可以在 localhost 上运行,但不能在外部运行。我无法在另一台计算机上使用它。我被建议改变
var socket = io.connect('http://localhost:8080');
至
var socket = io.connect('http://mydomain.com:8080');
,但这会使浏览器抛出以下错误:
Uncaught ReferenceError: io is not defined mydomain.com/:3
GET http://mydomain.com/socket.io/socket.io.js mydomain.com/:1
即使在我的主服务器计算机上。我使用带有 mac mini 的 OSX 服务器。
任何意见,将不胜感激: