ホームページ  >  記事  >  ウェブフロントエンド  >  node_node.jsでのsocket.ioイベントの使用方法の詳細な説明

node_node.jsでのsocket.ioイベントの使用方法の詳細な説明

WBOY
WBOYオリジナル
2016-05-16 16:26:541656ブラウズ

socket.io クラス ライブラリは、メッセージを相互に送信できるだけでなく、ソケット ポート オブジェクトの Emit メソッドを通じてイベントを相互に送信することもできます。

emit は以前のイベントでそれを述べていましたが、今では 1 つの文で述べられています。つまり、emit は手動でイベントをトリガーするために使用されます。

コードをコピーします コードは次のとおりです:

ソケット.emit(イベント,データ,関数(データ1,データ2...){
});

emit メソッドを使用してイベントを送信する場合、相手側のソケット ポート オブジェクトの on メソッドと Once メソッドを使用してリッスンできます。

コードをコピーします コードは次のとおりです:

ソケット.on(イベント,関数(データ,fn){
});
ソケット.once(イベント,関数(データ,fn){
})

上記のコールバック関数のパラメータデータ: 相手が送信したイベントに含まれるデータ、

fn: イベント送信時に相手が指定したコールバック関数。

ケース 1: サーバーとクライアントが接続されると、イベントは hello 属性値が「Hello」であるオブジェクトを送信し、クライアントを受信した後、他のイベント イベントを送信します。コンソールに「サーバーがデータを受信しました」と出力され、クライアントはイベントに含まれるデータを送信します。

サーバー側コード、server.js

コードをコピーします コードは次のとおりです:

var http=require("http");
var sio=require("socket.io");
var fs=require("fs");
var server=http.createServer(function (req,res) {
res.writeHead(200,{"コンテンツタイプ":"text/html"});
res.end(fs.readFileSync("./index.html"));
});
サーバー.listen(1337);
varソケット=sio.listen(サーバー);
socket.on("接続", 関数 (ソケット) {
ソケット.emit("ニュース",{hello:"こんにちは"});
socket.on("私の他のイベント", function (data) {
console.log("サーバーは情報 %j を受信しました",data);
});
});

クライアントindex.htmlコード:

コードをコピーします コードは次のとおりです:






<スクリプト src="/socket.io/socket.io.js">
<スクリプト>
varソケット=io.connect();
socket.on("ニュース", function (data) {
console.log(data.hello);
ソケット.emit("私の他のイベント",{my:"データ"});
});





実行結果:、

発見できることが 1 つあります。それは、実行は手動実行側ではなく、常にリスニング側であるということです。

ケース 2: 手動で相手のイベントをトリガーする場合、コールバック関数を指定します。

クライアントとサーバーが接続されると、setName イベントがクライアントに送信され、イベントがトリガーされるとコールバック関数が指定され、コールバック関数は 2 つのパラメーター値を出力します。コンソールへ。

コードをコピー コードは次のとおりです:

 var http=require("http");
 var sio=require("socket.io");
 var fs=require("fs");
 var server=http.createServer(function (req,res) {
     res.writeHead(200,{"コンテンツタイプ":"text/html"});
     res.end(fs.readFileSync("./index.html"));
 });
 サーバー.listen(1337);
 varソケット=sio.listen(サーバー);
 socket.on("接続", 関数 (ソケット) {
     socket.emit("setName","张三", function (data1,data2) {
         console.log(data1);
         console.log(data2);
     });
 });

复制代 代码如下:

 
 
 
    
    
     <スクリプト src="/socket.io/socket.io.js">
     <スクリプト>
         varソケット=io.connect();
         socket.on("setName", function (name,fn) {
            console.log(名前);
             fn("李四","王五");
         });     
    
 
 
 
 
 

実行結果:

回调関数数实で触発端で実行されます。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。