6

HTML5 / JS アプリを作成し、バックエンドに Azure Mobile Service を使用しようとしています。

ソース管理と npm モジュールのサポートを示すScottGu の投稿に基づいて、socket.io を使用してリアルタイム通知と WebSocket の使用を有効にできるかどうか疑問に思っています。

モジュールを取り込んで、特定の要求ごとにそれを利用する方法はわかります (たとえば、クライアントがリソースに POSTS するとき、リソースの作成をすべてのクライアントにブロードキャストするためのフックを追加します)。 socket.io オブジェクトをセットアップして共有します。

注意。iOS、Windows、および Google のプッシュ ベースの通知の組み込みサポートは認識していますが、(まだ) Web ベースのプロジェクトにすぐに使用できるソリューションを提供していないため、socket.io (または任意のSignalR 風に相当します)。

4

2 に答える 2

1

WebSocket は Azure Mobile Services で問題ないはずです。これは、HTTP 接続をフレーミング (信頼性の高い UDP に似ています) を使用してソケットに戻すだけであるためです。ただし、いくつかの注意事項があります。

  • Socket.IO を使用している場合、ブラウザ/プロキシは WebSocket をサポートしていないため、デフォルトで XHR にフォールバックします。ただし、XHR 経由の Socket.IO には多数の URL エンドポイントが必要であり、Azure Mobile Services では失敗します。https://github.com/learnboost/socket.io-specの Socket.IO プロトコル仕様の詳細
  • Linux ボックスを必要とする Socket.IO を介したサーバー ファームをサポートするには、Redis (redis.io) を使用する必要があります。現時点では、Windows プラットフォームでの実験的なビルドしかありません

WebSocketをサポートしていないブラウザ/プロキシで失敗しないように、Socket.IOサーバー専用の別のマシンセットをセットアップしたいと思います。次に、誰かが Azure Mobile Services の API に POST すると、API はメッセージをメッセージ キューに入れ、すべての Socket.IO サーバーにメッセージをブロードキャストするように通知します。

于 2014-01-07T08:18:05.343 に答える
1

起動スクリプト拡張機能を使用して、Socket.IO のサポートが追加されました。

var path = require('path');

exports.startup = function (context, done) {
    var io = require('socket.io')(context.app.server);
    io.on('connection', function(socket){
      socket.on('chat message', function(msg){
        io.emit('chat message', msg);
      });
    }); 

       context.app.get('/public/chat.html', function(req, res) {
        res.sendfile(path.resolve(__dirname, '../public/chat.html'));
    }); 
    done();
}

詳細については、http: //azure.microsoft.com/blog/2014/08/26/how-to-use-socket-io-with-azure-mobile-service-node-backend/を参照してください。

于 2014-09-09T02:16:54.440 に答える