私は電話とWebページの間の通信を行うためにSocket.ioを使用しています。私はSocket.ioについて多くの他の人が5分ほどアイドル状態になってから接続が落ちるのを見てきましたが、これは一定の情報を前後に出している接続です。接続を維持できるかどうかは約30秒です。Socket.ioを使用すると、接続が低下し続ける
私が実行しているサーバー側のコードは次のとおりです。
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
io.on('connection', function(socket){
socket.on('create', function (room) {
socket.join(room);
});
socket.on('player-move', function(msg){
roomId = msg['room'];
move = msg['action'];
socket.broadcast.to(roomId).emit('player-move', move);
});
socket.on('disconnect', function() {
console.log('someone has disconnected');
});
});
http.listen(443, function(){
console.log('listening on *:443');
});
クライアント側はかなり基本的なEMITイベントです。例は次のとおりです。
$("#arrow-left").on("touchstart", function(){
var senddata = { "room": roomId, "action": "d-l" };
socket.emit("player-move", senddata);
});
すべてが起動してから接続がただちに終了するまで、すべてが正常に実行されているようです。接続は通常5秒〜10秒後に再開します。誰も似たような問題が発生していますか?これは潜在的にコードではなくサーバーで問題になるでしょうか?以前はSocket.ioを使っていろいろなサーバーで同様のことをしてきましたが、この種の接続に問題はありませんでした。どんな助けや方向性もあります。ありがとう!
あなたのサーバの 'var'宣言はどこにありますか? 'roomId ='、 'move ='は、非厳密モードでグローバルスコープ内でこれらの変数を定義し、サーバをstrictモードで完全にクラッシュさせます。クライアントはどこで 'roomId'を取得していますか?もしあなたが基本的に 'socket.broadcast.to(undefined).emit(...);'を実行するようにサーバに指示しているので、あなたのサーバをクラッシュさせるかもしれません。 –
クライアントとサーバの間に、アウトソケット?あなたのサーバーは継続的に稼動しており、再起動していないことを確かめていますか? – jfriend00
接続を解除してもよろしいですか?接続は、永続的な接続ではなく、長いポーリングに落ちる可能性があります。これは、さまざまな理由で発生する可能性があり、接続されていないように見えます。 – pay