私は、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
引数を回避する方法はありますか?. これは両方の方法で同じように機能しますか? (サーバー→クライアントおよびクライアント→サーバー)。