Tôi đã nhìn chằm chằm vào các ví dụ node.js và socket.io tất cả các buổi chiều và tôi đang cố gắng để mảnh với nhau một trang đơn giản mà sẽ cho tôi biết có bao nhiêu người dùng tôi đã kết nối với máy chủ.nodejs socket.io không thể kết nối với máy chủ?
Tôi đã đọc tài liệu tại http://socket.io/ cũng như một số hướng dẫn/câu hỏi tại đây mô tả chính xác những gì tôi đang cố gắng làm. Tôi cũng đã tìm thấy create simple node js server and client không giúp tôi.
Thông tin Version:
Node.js - 0.6.15
nhanh - 3.0.0alpha1
socket.io - 0.9.5 (socket.io-client là phiên bản tương tự, tuy nhiên không tìm thấy tài nguyên ... xem ý kiến)
EJS - 0.7.1
đây là mã máy chủ của tôi:
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);
Đây là mã khách hàng của tôi:
<!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>
Đây là những gì đang xảy ra khi tôi chạy máy chủ và kết nối với khách hàng.
$ node server.js
info - socket.io started
khi tôi điều hướng đến máy chủ cục bộ: 4000 trên trình duyệt web của tôi Tôi nhận được trang có '0' (number_of_connections). Ngoài ra, tôi thấy không có gì trong thiết bị đầu cuối cho máy chủ (trên. '' Kết nối 'là không bao giờ trúng).
Trên máy khách, sau một hoặc hai giây, tôi bắt đầu nhận được một số lượng lớn các lỗi (nếu tôi rời khỏi giao diện điều khiển mở cho một vài giây nó bị treo trang) xem hình dưới đây:
Xin vui lòng, bất kỳ sự giúp đỡ với bắt đầu từ đâu để gỡ lỗi này sẽ được đánh giá tôi chỉ muốn để có được ví dụ cơ bản này lên và chạy để tôi có thể bắt đầu chơi với/hiểu nodejs và socket.io!
Một nơi tốt để bắt đầu sẽ là phiên bản nút và phiên bản socket.io của bạn. Tôi thấy phiên bản của cdn.socket.io trong 0.6. Tôi thấy rằng tôi đang sử dụng socket.io 0.8.7 với nút v0.6.4, ví dụ. Ngoài ra, có một lý do bạn không chỉ cần đi với ''? Bạn có thể thử và xem kết quả có khác không (vì điều đó sẽ bỏ qua khả năng xảy ra lỗi phiên bản) – Kato
'Không tải được tài nguyên: máy chủ trả lời với trạng thái 404 (Không tìm thấy) http: // localhost: 4000/socket.io/socket.io.js' – rlemon
Hm, thật kỳ quặc. Tôi làm việc ra khỏi hộp, tất nhiên, vì vậy tôi không thể giúp đỡ nhiều về lý do tại sao bạn không thể sử dụng URL socket.io địa phương. Btw, phiên bản socket.io-client của tôi là 0.8.7 (giống như socket.io's) - tự hỏi nếu có vấn đề ... – Kato