2015-09-23 4 views
14

ソケットを使用するための非常に良い文書がありましたが、Irl Nathon's Sails Cast seriesのおかげでありました。 v0.11に変更されました。帆チームはsocket.ioルーチンをラップして埋め込みました。socket.ioと帆の使用js

セイルサイトSailsSocketは、何をすべきか、何をやるべきか、どこで行うべきではないか、あるいは私が必要としているかどうかを曖昧に示しています。npmまたはbower何か。これは、セールサイトで話したsails.config.socketsを使用しようとすると特にイライラしました。私はv0.11のディレクトリでも見つからない。

まず、io.socket.getまたは.postなどへの自分の応答を作成する方法と場所を知りたいと思います。今、私のようなものを得るかとき:

`io.socket.request({ 
    method: 'get', 
    url: '/sites/2', 
    params: {}, 
    headers: {} 
},function serverResponded(body, JWR){console.log("Body: ", JSON.stringify(body,null, 4)); console.log(' JWR: ', JWR.body)});' 

を私は取り戻す:

undefined 
VM1149:7 "Not implemented in core yet" 
VM1149:7 JWR: Not implemented in core yet 

を私は帆コンソールで呼び出されているサイトを見ることができますが、何も全体で来ることはありません。

自分のルートを定義し、自分のサイトコントローラに自分自身のfind:機能を持たせていて、手動でサーバー側のソケットに何かをプッシュする必要があると思います。しかし、私はHTTPと同じコントローラルーチン内のsocket.ioのテーブルだけを使ってページ全体をどのように呼び出すのか混乱しています。私は自分の低レベルのWebページから呼び出すことができ socket.ioルーチンを書くのです

  • まだapp.jsファイルで実行していますか?

セイルキャストはそこで行われていることを示しましたが、再び変更されました。

+0

[this](http://stackoverflow.com/questions/40021125/sails-io-js-io-socket-get-user-not-implemented-in-core-yet/40027253#40027253)スレッドのヘルプ君は?私はその質問がかなり似ていると思います... –

+0

セールフックの設定方法 –

答えて

0

セイル "仮想リクエスト"(これらはsocket.ioベースのHTTP-ishリクエストと呼ばれます)は、JSONデータをサーバに取得またはポストするために一般的に使用されます。さらに、クライアント側のスクリプトが仮想要求を行う場合、サーバーは要求元のソケットを部屋に追加または削除することがあります。

「仮想メソッド」を使用すると、最終的には同じコントローラアクションが実行されますが、req.isSocket = trueが設定されます。帆から(グローバル変数ioを提供し、低レベルsocket.ioとして

... 
// 'get /sites/:id': 'SomeController.showSite' (should be put in your `routes.js`) 
showSite: function(req, res) { 
    // load something from the database 
    Site.findOne(req.param('id')).exec(function(err, site) { 
    // handler errors (same for HTTP or sockets) 
    if (err) return res.serverError(); 
    if (!site) return res.notFound(); 

    if (req.isSocket) return res.json(site); // render JSON response for our `site` object 
    else return res.view('sites/show', {site: site}); // render an HTML view 
    }); 
} 

この例では、HTML-たい要求のためのビューを描画するが、ソケットベースの要求のためにJSONデータを返すことがsails.io.js)は、SailsSocketのインスタンスです。 HTTP-ishの "仮想リクエスト"を作成することができます。 More info here(SailsS​​ocketについては既に読んでいるようですが)基礎となるsocket.ioクライアントにはio.socket._rawでアクセスできます。

// do this in the browser. 
// sails.io.js should be included in layout.ejs by default. 
io.socket.get('/site/2', console.log); // "virtual request" 
// neat little trick  ^^^^^^^^^^^  for testing :) 
var rawIO = io.socket._raw; 
rawIO.emit('some:event', "using native socket.io"); 
関連する問題