2016-05-22 5 views
0

私は質問があります。私はTypescriptでSocket.ioを使用しようとしています。Socket.io Typescriptカスタム引数

そこで私は、この定義を使用しています:私の質問に今https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/socket.io-client/socket.io-client.d.ts

を。 socket.emitメソッドを使用してカスタム引数 "example:true"を送信すると、socket.onceメソッドを使用する必要がありますか?

NodejSサーバのための私のコード:

socket.emit("example-event-request"); 

socket.once("example-event-response", (data) => { 
    this.example = data.example; 
}); 

追加回答として(すぐに削除される可能性が高い):

socket.once("example-event-request", { 
    socket.emit("example-event-response", {example: true}); 
}); 

ブラウザのデータを必要とします

これ以上指定したいと思います。リンクされた定義を使用して、このJavaScriptコードを Typescriptに書く必要があります。

this.socket.once(eventName, function(){ 
    callback.apply(this.socket, args); 
}); 

this.socket.emit(eventName, data, function(){ 
    callback.apply(this.socket, args) 
}); 

問題は、このための 活字体の変数が存在しないので、私は引数を得ることができないということです。

答えて

1
emit

onceが同じ側にすることができません。サーバーからクライアントまたはクライアントからサーバーに送信します。そして、onceは反対側に属しています。

は、おそらく{example: true}である必要があります。つまり、jsonのシリアル化可能なオブジェクト(文字列ではありません)です。

もっと

あなたがrpcを行うために探している場合、私は、ソケットIO(またはプロセス間のIPC)の上にあることを抽象化するサンプルプロジェクト(ALM)を持っている:https://basarat.gitbooks.io/alm/content/contributing/async.html

+0

あなたは完全に正しかったです。私の例のコードは間違っていた。私はそれを更新しました。 – Feeliiix

+0

更新された質問の中の 'server'(ノードjsサーバ)と' client'(ブラウザ)はどちらですか? – basarat

+0

Upps、Webserverの例はブラウザです。失敗します。 – Feeliiix

関連する問題