14

輸送専用のsocket.ioの軽量な代替品はありますか?

単にメッセージトランスポートとしてsocket.ioを使用するnode.jsアプリケーションがあります。私のアプリケーションはセッションとメッセージルーティングを独自に管理しています。トランスポートにsocket.ioを使用しています。websocket+古いブラウザーのデフォルトのフォールバックは何でもです。

新しいバージョンのsocket.ioはどんどん重くなっているようですが、今ではredisサポートが付属していますが、これはまったく必要ありません。

4

4 に答える 4

15

wsモジュールは驚くほど高速で(ベンチマークを見てください)十分にテストされており、非常に軽量ですが、フォールバックを自分で行う必要はありません。さらに、その上にイベントエミッターがありません。しかし、それがあなたが望むものであるならば、それは輸送だけで驚くべきことです。貧乏人の「セッション」が必要な場合は、次のようにwsオブジェクトに何かを添付します。

var WebSocketServer = require('ws').Server
var wss = new WebSocketServer( /* some config */);
wss.on('connection', function(ws) {
    ws.on('message', function (message) {
        try {
            var obj = JSON.parse(message) // using JSON  over the conversation
        } catch (err) {
            var obj = {};
            console.log('probably not valid json');
        }
        switch (true) {
            case obj.name !== undefined:
                ws.name = obj.name; // Here's the poor man's session variable
                ws.send('Hello '+ws.name);
            break;
        }
    });
});

足りないのは、その上にあるイベントエミッターだけです...

于 2012-08-19T10:51:31.913 に答える
8

他の選択肢があります。faye--http ://faye.jcoglan.com/はその1つです。socket.ioに似ていますが、Bayeuxプロトコルを使用します。もう1つは、サーバーを実行したくない場合です---http pusher: //pusher.com/

于 2012-08-19T06:07:13.040 に答える
6

sock.jsを見てください-それはクロスブラウザーwebsocketsapiを実装しようとしますがそれ以上は何もしません。

于 2012-08-19T10:38:02.373 に答える
4

Node.jsの場合、ws + ws-wrapper + ws-server-wrapperを試すことができます。ws-wrapperは、WebSocketにイベントハンドラー機能を追加する軽量のlibです...socket.ioにあるものと似ています。さらに、Promiseベースのリクエストと名前空間を取得します。

他の人が述べたように、wsモジュールは非常に高速で軽量であり、内部でsocket.ioによっても使用されます。ネイティブWebSocketは現在、すべての最新のブラウザーでサポートされているため、ほとんどのリアルタイムWebアプリケーションで他のトランスポートをサポートするのはばかげているようです。

ws-wrapper自動再接続も実装されていないため、必要に応じて、指数バックオフアプローチについて説明しているこのwikiページを確認してください。

最後に、ws-server-wrapperはサーバー側のライブラリであり、接続されているすべてのWebSocketにメッセージを送信したり、すべてのWebSocketからのイベントをリッスンしたりすることができます。

免責事項:私はws-wrapperの作者です。:)

于 2017-08-28T16:38:27.373 に答える