1

現在、ユーザーがページを切り替えるたびに、このコード ブロックがすぐに実行されます。

// when the user disconnects.. perform this
socket.on('disconnect', function(){
    delete SiteRooms[socket.username];
    io.sockets.emit('updateusers', usernames);
    io.sockets.emit('updateroomusers', SiteRooms);
});

ユーザーが自分のサイトでページを切り替えているだけの場合、これを実行したくありません。これを行う方法はありますか?

私はタイマーを考えていました.50秒に設定するかもしれません-その時点で存在しない場合は30秒に設定するかもしれません:その後、切断します. しかし、これが良い解決策なのか、実際のコードを書く方法なのか、私にはわかりません..

何か案は?

4

2 に答える 2

1

The event firing is correct. When a user switches pages, the whole execution context of that page ends, and any scripts are stopped. This includes the client code for Socket.IO.

You have a couple choices. One choice is to load your page content with AJAX. This isn't always ideal... it depends on what your site does and how it is built.

Another option is to build in that delay yourself. Wherever you keep your user data, just add a property to that object that holds a timeout for however many seconds you'd like. If the user reconnects, clear the timeout before it fires.

于 2013-01-16T03:38:44.843 に答える
0

代わりにページのコンテンツを変更するスクリプトでリンクを変更できます。私は経験者ではありませんが、JADEはその手助けをしてくれると思います。github にいくつかの例があります。

https://github.com/visionmedia/jade

ブロックを交換することが解決策になると思います。

于 2013-01-16T02:33:03.620 に答える