2

次のような AJAX ルート (jquery から $.Ajax で呼び出される) を置き換えるのは悪いことですか?

  • GET /アニマルズ
  • /animals/[ID] を取得
  • 投稿 /animals

socket.io イベント (クライアントが応答できるようにクライアントとサーバーにバインドされたイベント) の場合:

  • emit("アニマルズ:読み取り")
  • emit("animals:read", {id:asdasd})
  • emit("animals:write", animalData)

または、socket.ioを「のみ」使用して、データをクライアントにプッシュする必要がありますか?

[編集] POST ルートに socket io を使用しないと、1 つの問題が発生する可能性があります。問題は、クライアントのソケットを簡単に使用してデータをブロードキャストできないことです。

サーバ:

on("animals:write", function(data){ 
    saveAnimal(req.data)
    socket.broadcast(...)
    emit("animals:write", writenAnimal)  
})

VS

app.post(function(req,res){
    saveAnimal(data)
    // cant broadcast :(
    res.send(201,writenAnimal)
})

確かに、他のいくつかのリクエストでクライアントにデータをプッシュするので、すべてのクライアントには少なくとも 1 つのソケットがあります。

4

3 に答える 3

2

socket.ioWeb サイトにリアルタイムのデータを提供する場合は、IMHOを使用する必要があります。スタックオーバーフローを例にとってみましょう。Websocket を使用して、スコアをリアルタイムで更新し、通知を更新します。

しかし、本当に SEO フレンドリーな (つまり、ページの提供をサポートすることを意味します) アプリケーションを作成したいのでhttpあれば、socket.io でセッションとパーミッションを管理することの難しさを認識している場合は、より重要なアプリケーションを作成することAJAXをお勧めします。ページおよびsocket.ioその他のリアルタイム データ用。

于 2013-01-15T10:15:20.263 に答える
1

これには ajax を使用します。その http ベースのデータ リクエストはリアルタイムではありません。

于 2013-01-15T03:30:24.167 に答える
1

クライアントにデータをプッシュしたくない場合は、socket.io代わりにを使用する理由がわかりませんAJAX。つまりAJAX、クライアントとのセッションを処理する必要はなく、おそらくより適切にスケーリングされるでしょう。

ではsocket.io、接続されたクライアントごとに、その 1 つのクライアントとペアになっているサーバー上に何らかのオブジェクトが必要です。永続的な接続が不要または望ましくない場合、理由もなくサーバー上のメモリをより多く使用します。

また、AJAXコードを他のシステムで再利用したい場合は、既存のツールの巨大なエコシステムと連携することをお勧めします。

WebSocketそうは言っても、データをクライアントにプッシュしたり、何らかのブロードキャストを実行したりするような機能が必要な場合は、代わりに を使用することを検討しsocket.ioAJAXください。AJAXsocket.io

于 2013-01-15T04:09:17.417 に答える