我想要開始使用node.js和socket.io。
我有一個非常(非常)簡單的客戶端服務器測試應用程序,我不能讓它工作。
該系統設置在帶有apache服務器的Windows機器上。
的Apache是在port 81
運行,並且在socket.io設置聽port 8001
socket.io - 'connect'事件不會在客戶端觸發
服務器 - server.js
var io = require('socket.io').listen(8001);
io.sockets.on('connection', function (socket) {
console.log('\ngot a new connection from: ' + socket.id + '\n');
});
客戶 - index.html的
<!DOCTYPE html>
<html>
<head>
<title>node-tests</title>
<script type="text/javascript" src="http://localhost:8001/socket.io/socket.io.js"> </script>
<script type="text/javascript">
var socket = io.connect('http://localhost', { port: 8001 });
socket.on('connect', function() {
alert('connect');
});
socket.on('error', function (data) {
console.log(data || 'error');
});
socket.on('connect_failed', function (data) {
console.log(data || 'connect_failed');
});
</script>
</head>
<body>
</body>
</html>
使用node server.js
啓動服務器後,標準(預期)輸出爲wr伊頓服務器控制檯:
info: socket.io started
當我在瀏覽器中打開index.html
(鉻在我的情況 - 在其他瀏覽器沒有測試)以下日誌寫入服務器控制檯:
info: socket.io started
debug: served static content /socket.io.js
debug: client authorized
info: handshake authorized 9952353481638352052
debug: setting request GET /socket.io/1/websocket/9952353481638352052
debug: set heartbeat interval for client 9952353481638352052
debug: client authorized for
got a new connection from: 9952353481638352052
debug: setting request GET /socket.io/1/xhr-polling/9952353481638352052?t=1333635235315
debug: setting poll timeout
debug: discarding transport
debug: cleared heartbeat interval for client 9952353481638352052
debug: setting request GET /socket.io/1/jsonp-polling/9952353481638352052?t=1333635238316&i=0
debug: setting poll timeout
debug: discarding transport
debug: clearing poll timeout
debug: clearing poll timeout
debug: jsonppolling writing io.j[0]("8::");
debug: set close timeout for client 9952353481638352052
debug: jsonppolling closed due to exceeded duration
debug: setting request GET /socket.io/1/jsonp-polling/9952353481638352052?t=1333635258339&i=0
...
...
...
在瀏覽器控制檯,我得到:
connect_failed
所以它看起來像客戶端到達服務器,並嘗試連接,服務器被授權握手,但connect
事件永遠不會在客戶端觸發,而是連接方法會達到其connect timeout
和max reconnection attempts
,並放棄返回connect_failed
。
任何幫助\對此的見解將有所幫助。
謝謝
只用io.connect(),它可以推斷嘗試來自您所在網址的網址和端口。我遇到過問題,io.connect中的事情並不像我期望的那樣工作。 – 2012-04-05 18:45:26
@kfiroo你有沒有得到任何解決方案? – Hackableweb 2013-07-19 01:11:07
@TimothyStrimple謝謝蒂姆! **再次在heroku(Cedar)和localhost **上工作! – AmpT 2014-04-10 23:34:23