我一直在盯着node.js和socket.io示例整个下午,我试图拼凑一个简单的页面,告诉我有多少用户连接到服务器。nodejs socket.io无法连接到服务器?
我已阅读http://socket.io/的文档以及这里的几个教程/问题,概述了我正在尝试做的事情。我也发现create simple node js server and client哪些不帮我。
版本信息:
的node.js - 0.6.15
快递 - 3.0.0alpha1
socket.io - 0.9.5(socket.io客户端是相同的版本,但是不查找资源...查看评论)
EJS - 0.7.1
这里是我的服务器代码:
var express = require('express'),
config = {
port: 4000,
hostname: 'localhost'
};
var server = module.exports = express.createServer();
/* server configuration */
server.use(express.cookieParser('keyboard unicorn'));
server.use(express.bodyParser());
server.use(express.methodOverride());
server.use(express.session({ secret: 'keyboard unicorn' }));
server.engine('.html', require('ejs').__express);
server.set('views', __dirname + '/lib/views');
server.set('view options', { layout: false });
server.set('view engine', 'html');
server.use(server.router);
server.use('/', express.static(__dirname + '/lib/assets'));
var io = require('socket.io').listen(server);
var connections = { 'length': 0 };
io.sockets.on('connection', function(socket) {
socket.__fd = socket.fd;
connections[socket.__fd]=socket.remoteAddress;
++connections.length;
console.log('user connected! There are a total of ' + connections.length + ' users online.');
return socket.on('disconnect',function(){
delete conns[socket.__fd];
--connections.length;
console.log('user disconnected! There are a total of ' + connections.length + ' users remaining online.');
});
});
server.get('/', function(req, res) {
res.render('index', {
'page_title': 'sample application',
'number_of_connections': connections.length
});
});
server.listen(config.port, config.hostname);
这里是我的客户端代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title><%= page_title %></title>
</head>
<body>
<div>There is a total of <%= number_of_connections %> user(s) connected.</div>
<script src="http://cdn.socket.io/stable/socket.io.js"></script>
<script type="text/javascript">
var socket = new io.Socket('localhost',{'port':4000});
socket.connect();
socket.on('connect', function() {
console.log('connected');
});
</script>
</body>
</html>
下面是当我运行服务器发生了什么事,并与客户端连接。
$ node server.js
info - socket.io started
然后当我导航到我的web浏览器上的localhost:4000我得到'0'(number_of_connections)的页面。 ('连接'从未被击中)
在客户端上,一两秒钟后,我开始得到大量的错误(如果我离开控制台打开它崩溃了几秒钟的页面)看到图像的下方:
请与从哪里开始进行调试这个任何帮助,将不胜感激我只想得到这个简单的例子了并运行,所以我可以开始玩/理解nodejs和socket.io!
开始的好地方是你的节点版本和socket.io版本。我在0.6中看到cdn.socket.io的版本。例如,我看到我使用socket.io 0.8.7和节点v0.6.4。另外,是否有一个原因,你不只是''src =“/ socket.io/socket.io.js”>'?您可以尝试一下,看看结果是否不同(因为会绕过版本错误的可能性) – Kato 2012-04-17 20:35:28
'加载资源失败:服务器响应状态为404(未找到)http:// localhost:4000/socket.io/socket.io.js' – rlemon 2012-04-17 20:37:42
嗯,这很奇怪。当然,我的开箱即用,所以我无法帮你解决为什么你不能使用本地socket.io URL。顺便说一句,我的socket.io客户端版本是0.8.7(相同的socket.io的) - 不知道是否重要... – Kato 2012-04-17 20:45:24