5

Socket.IO Webサイトのこの例は、私を混乱させます。データの送受信(謝辞)

クライアント

<script>
    socket.on('connect', function () {
        socket.emit('ferret', 'tobi', function (data) {
             console.log(data); // data will be 'woot'
        });
    });
</script>

サーバー

io.sockets.on('connection', function (socket) {
    socket.on('ferret', function (name, fn) {
        fn('woot');
    });
});

私は実際にこの例を再現しています。私が理解できないのは:

  • Q1:そもそもこれはどのように機能しますか。サーバー(実行時fn)は自動的に結果をクライアントに送信しますか?Socket.IOfnはクライアントの3番目のパラメーターにバインドしますemitか?
  • Q2:匿名サーバーnameの(未使用の)パラメーターは何ですか?それをログに記録すると、それが理由であることがわかります。function (name, fn)undefined
4

3 に答える 3

8

自分で見つけた、間違っている場合は訂正してください:

  • name(公式ドキュメントからの不運な名前!!!)は、実際にはクライアントから送信されたデータです
  • fnクライアントコードの3番目のパラメータに対応し、(サーバーから)実行されると自動的に(?)データをクライアントに送り返します。すばらしい!
于 2013-02-19T16:07:08.200 に答える
1

それはそう; ここに示すように、「fn」を「callback」に名前変更すると、より明確になります: Acknowledgment for socket.io custom event。そのコールバックがサーバー側で実行されることはありません。サーバーは、コールバックに渡されたデータ (この場合は文字列 "woot") を確認としてクライアントに送り返すだけです。次に、サーバーから送信されたデータを使用して、クライアントでコールバックが実行されます。

于 2014-11-19T20:38:48.037 に答える
-1

クライアントからサーバーにデータを送信するには

socket.emit("Idofhtmltag",value);

サーバーからデータを受信するには、クライアントの html にこれを追加します

socket.io("Idofhtmltag",function(msg){  }) ; 
于 2016-09-27T04:54:00.470 に答える