2

私は、socket.io のイベントとコールバックがどのように機能するかについて、この興味深い紹介記事を読んでいました。

次のようなもので最初に試してみることにしました。

初挑戦

サーバー.js

// client is the socket for the client
client.on('foo' , function(callback){
  callback("Hello world");
});

client.js

// server is the socket for the server
server.emit('foo', function(msg){
  alert(msg);
});

まあ、それが実際に機能しなかったのはたまたまです (サーバーはcallback関数ではないことを伝える例外をスローします)。それを解決しようとして、正しい方法でそれを行う方法を説明するこの回答を見つけました。まあ、それもうまくいきませんでした。いくつかの変更を加えて、私はこれにたどり着きました...

2 回目の試行

サーバー.js

// client is the socket for the client
client.on('foo' , function(name, callback){
  callback("Hello world");
});

client.js

// server is the socket for the server
server.emit('foo',{},function(msg){
  alert(msg);
});

まあ、それは完全に機能しますが、その「名前」パラメーターと私が使用しない空のハッシュを追加する必要があるのは、あまり良い解決策ではないようです.

驚くほど 不完全なsocket.ioのドキュメントでこれの説明を見つけようとしましたが、この動作の説明が見つからなかったため、ここで質問しています。

私が持っているもう1つの疑問は、反対側(つまり、サーバーがクライアントにコールバックを送信し、サーバーでコールバックが実行される)に対して同じことができるかどうかですが、まだ試していません.

TL;DR : なぜ最初の試行ではうまくいかず、2 回目の試行ではうまくいくのですか? その無駄な空のハッシュとname引数を回避する方法はありますか?. これは両方の方法で同じように機能しますか? (サーバー→クライアントおよびクライアント→サーバー)。

4

1 に答える 1