私はこれに何日も取り組んできましたが、問題をできるだけ簡単にしました。
node.js サーバーにコマンドを送信するボタンがあります。このサーバーは、'testing' というフレーズを console.log に記録し、関数を実行するためにクライアントに信号を送信します。
問題は、クライアントが切断されていることです?! ただし、2 回目の試行では切断されません。
クライアント:
<button onclick="test()">Login</button>
var socket = io.connect('http://54.213.92.113:8080');
function test(){
socket.emit('test');
}
socket.on('conf', function () {
alert("testing worked");
}
サーバ:
var io = require('socket.io').listen(app);
io.sockets.on('connection', function(client) {
client.on('test', function(){
client.emit('conf);
console.log("testing");
});
});
これが私のログです。繰り返しますが、コードは 2 回目の試行で機能するように見えます。
最初の試行:
info - socket.io started
debug - served static content /socket.io.js
debug - client authorized
info - handshake authorized Egh72p-hOLFSpLh2CS7m
debug - setting request GET /socket.io/1/websocket/Egh72p-hOLFSpLh2CS7m
debug - set heartbeat interval for client Egh72p-hOLFSpLh2CS7m
debug - client authorized for
debug - websocket writing 1::
debug - websocket writing 5:::{"name":"conf"}
testing
info - transport end (socket end)
debug - set close timeout for client Egh72p-hOLFSpLh2CS7m
debug - cleared close timeout for client Egh72p-hOLFSpLh2CS7m
debug - cleared heartbeat interval for client Egh72p-hOLFSpLh2CS7m
debug - discarding transport
debug - served static content /socket.io.js
debug - client authorized
info - handshake authorized PCzh1CS-tze49XHaCS7n
debug - setting request GET /socket.io/1/websocket/PCzh1CS-tze49XHaCS7n
debug - set heartbeat interval for client PCzh1CS-tze49XHaCS7n
debug - client authorized for
debug - websocket writing 1::
2回目の試行後:
info - socket.io started
debug - served static content /socket.io.js
debug - client authorized
info - handshake authorized Egh72p-hOLFSpLh2CS7m
debug - setting request GET /socket.io/1/websocket/Egh72p-hOLFSpLh2CS7m
debug - set heartbeat interval for client Egh72p-hOLFSpLh2CS7m
debug - client authorized for
debug - websocket writing 1::
debug - websocket writing 5:::{"name":"conf"}
testing
info - transport end (socket end)
debug - set close timeout for client Egh72p-hOLFSpLh2CS7m
debug - cleared close timeout for client Egh72p-hOLFSpLh2CS7m
debug - cleared heartbeat interval for client Egh72p-hOLFSpLh2CS7m
debug - discarding transport
debug - served static content /socket.io.js
debug - client authorized
info - handshake authorized PCzh1CS-tze49XHaCS7n
debug - setting request GET /socket.io/1/websocket/PCzh1CS-tze49XHaCS7n
debug - set heartbeat interval for client PCzh1CS-tze49XHaCS7n
debug - client authorized for
debug - websocket writing 1::
debug - websocket writing 5:::{"name":"conf"}
testing
私はしばらくこれを研究してきましたが、まったくどこにも行きませんでした。このコードが最初の試行で機能しない理由を誰か知っていますか? - アラートは最初の試行後にのみ表示されます。