2

ajaxを使ってチャットアプリケーションを書きたいです。したがって、100ミリ秒(0.1秒)ごとにデータベースのユーザーメッセージテーブルを確認する必要があります。setTimeOutを使用して100ミリ秒ごとにajaxを呼び出す場合、問題はありますか?パフォーマンスの問題はありますか?落とし穴か何か?

4

3 に答える 3

0

これは非常に悪い考えです。ローカルマシンと少数のユーザーで動作する可能性がありますが、より多くのユーザーに簡単に拡張することはできません。WebSocketと長いポーリングを確認することをお勧めします。

于 2013-03-25T06:40:33.513 に答える
0

より良い代替手段は、を使用することSocket.IOです。これにより、このタスクがはるかに簡単になります

Socket.IOはそれをクロスブラウザソリューションにします

socket.ioからの例

サーバ:

var io = require('socket.io').listen(80);

io.sockets.on('connection', function (socket) {
  socket.emit('news', { hello: 'world' });
  socket.on('my other event', function (data) {
    console.log(data);
  });
});

クライアント(ブラウザ):

<script src="/socket.io/socket.io.js"></script>
<script>
  var socket = io.connect('http://localhost');
  socket.on('news', function (data) {
    console.log(data);
    socket.emit('my other event', { my: 'data' });
  });
</script>

編集:

PHPの場合、phpwebsocketクラスが適しています。また、クライアント側のjqueryプラグインの場合も同様です。

于 2013-03-25T06:42:25.730 に答える
0

JavaScriptは、setIntervalとsetTimeOutの2種類のタイマーを認識しています。setIntervalは100ミリ秒ごとに起動し、setTimeOutは前の呼び出しの100ミリ秒後に次の呼び出しをスケジュールします。アプリを調整するときは、この動作に注意する必要があります。また、実際には別のスレッドで仕事をしているWebworkerを検討することもできます。彼らはあなたの問題に適した解決策に聞こえるメッセージベースで通信します。正確な遅延(100ミリ秒以上)は、実際に試す必要があるものです。John Resigの本は、smallesの実用的なタイマー遅延が21ms(IE9)から1ms(Opera)まで、ブラウザー間で大きく異なることを示しています。

于 2013-03-25T06:49:41.510 に答える