1

ノードjsの初心者です。

node jsとsocket.ioを使ってブラウザゲームのチャットを作っています。学習とコーディングの数日後、チャットは正常に機能しますが、問題が発生します-クライアントのアクションがさらに増えると、クライアントブラウザーがハングします。

例: クライアントが「追加」ボタンを何度もクリックしてテキストをチャットに追加すると、クリックするたびにブラウザがどんどんハングアップしますが、ページを更新した後、「追加」ボタンを何度もクリックするまで、すべてがうまく機能します。回。

また、この問題は「追加」ボタンだけでなく、クライアントがチャットを変更する (プライベートまたはパブリック チャットのみを表示する) ときにも何度も発生します。

サーバーコードに問題があるとは思いません。ブラウザがハングしたときに他のクライアントのチャットが正常に機能するためです。したがって、問題はクライアント側にあると思います。そこでは、デフォルト設定で socket.io を使用します。

多分誰かが同じ問題を抱えていて、それを修正する方法を知っていますか?

<script src="sockets/socket.io.min.js"></script>
<script>
var socket = io.connect('http://'+chatSocketAddress+':'+chatSocketPort);
function ANgetChatRecords(){
  socket.emit('getRecords', { my_id:my_id, type:chat_pub_chatShow, my_perm:my_perm, lang:my_lang });
  socket.on('getRecordsAnswer', function (data) {
    document.getElementById("chatbox_pub_entry").innerHTML = data.text; 
  });
} //and ther other similar functions, like add record, delete record ... 
</script>
4

1 に答える 1

1

明示的でなくても、さらに socket.on() を設定できると言っていただけです。そこにあるコードはきれいに見えますが、同じイベントにさらに追加してスタックしている可能性があります。実際に呼び出された回数を確認できるように、いくつかのコンソール ログを追加します。

私のコードは次のようになります。

 listenForMessage: function(){
        param_socket.on("new", function (data) {
                console.log('new');
                console.log(data);
                app.newHandler(data);
            });

        param_socket.on("done", function (data) {
                console.log('done');
                app.doneHandler(data.id,data.success)
            });

        param_socket.on("change", function (data) {
                console.log('change');
                app.changeHandler(data.id,data.success)
            }); 

    },

もう1つ、この関数を1回だけ呼び出していますか? イベントを設定しているからです。

于 2012-09-03T15:16:02.923 に答える