欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

node中socket.io的事件使用詳解

 更新時間:2014年12月15日 12:16:21   投稿:hebedich  
這篇文章主要介紹了node中socket.io的事件使用詳解,需要的朋友可以參考下

socket.io類庫不但可以相互發(fā)送消息,而且還可以通過socket端口對象的emit方法互相發(fā)送事件.

emit在之前的事件上說過現(xiàn)在一句話帶過:emit是用來手動觸發(fā)事件的.

復(fù)制代碼 代碼如下:

socket.emit(event,data,function(data1,data2......){
});

在使用emit方法發(fā)送事件時,可以再另一端使用socket端口對象的on方法會once方法監(jiān)聽.

復(fù)制代碼 代碼如下:

socket.on(event,function(data,fn){
});
socket.once(event,function(data,fn){
})

上面的回調(diào)函數(shù)中的參數(shù)data:對方發(fā)送的事件中攜帶的數(shù)據(jù),

fn:對方在發(fā)送事件時指定的callback回調(diào)函數(shù).

案例1:當(dāng)服務(wù)器和客戶端連接后,向客戶端發(fā)送一個news事件,事件中攜帶一個對象,該對象的hello屬性值為"你好".在接收到客戶端發(fā)送my other event事件時,在控制臺中輸出"服務(wù)器端就收到數(shù)據(jù)"+客戶端發(fā)送事件中攜帶的數(shù)據(jù).

服務(wù)器端代碼,server.js

復(fù)制代碼 代碼如下:

 var http=require("http");
 var sio=require("socket.io");
 var fs=require("fs");
 var server=http.createServer(function (req,res) {
     res.writeHead(200,{"Content-type":"text/html"});
     res.end(fs.readFileSync("./index.html"));
 });
 server.listen(1337);
 var socket=sio.listen(server);
 socket.on("connection", function (socket) {
     socket.emit("news",{hello:"你好"});
     socket.on("my other event", function (data) {
         console.log("服務(wù)器端接受到信息%j",data);
     });
 });

客戶端index.html代碼:

復(fù)制代碼 代碼如下:

 <!DOCTYPE html>
 <html>
 <head lang="en">
     <meta charset="UTF-8">
     <title></title>
     <script src="/socket.io/socket.io.js"></script>
     <script>
         var socket=io.connect();
         socket.on("news", function (data) {
             console.log(data.hello);
             socket.emit("my other event",{my:"data"});
         });       
     </script>
 </head>
 <body>
 
 </body>

運行結(jié)果:、
 


可以發(fā)現(xiàn)一點:執(zhí)行總是在監(jiān)聽端,而不是手動執(zhí)行端.

案例2:在手動觸發(fā)對方事件時,指定回調(diào)函數(shù).

當(dāng)客戶端和服務(wù)端連接后,向客戶端發(fā)送setName事件,事件攜帶"張三",觸發(fā)事件時,指定一個回調(diào)函數(shù),該回調(diào)函數(shù)向控制臺輸出2個參數(shù)值.

復(fù)制代碼 代碼如下:

 var http=require("http");
 var sio=require("socket.io");
 var fs=require("fs");
 var server=http.createServer(function (req,res) {
     res.writeHead(200,{"Content-type":"text/html"});
     res.end(fs.readFileSync("./index.html"));
 });
 server.listen(1337);
 var socket=sio.listen(server);
 socket.on("connection", function (socket) {
     socket.emit("setName","張三", function (data1,data2) {
         console.log(data1);
         console.log(data2);
     });
 });

復(fù)制代碼 代碼如下:

 <!DOCTYPE html>
 <html>
 <head lang="en">
     <meta charset="UTF-8">
     <title></title>
     <script src="/socket.io/socket.io.js"></script>
     <script>
         var socket=io.connect();
         socket.on("setName", function (name,fn) {
            console.log(name);
             fn("李四","王五");
         });     
     </script>
 </head>
 <body>
 
 </body>
 </html>

執(zhí)行結(jié)果:

回調(diào)函數(shù)實在觸發(fā)端執(zhí)行的.

相關(guān)文章

  • node.js多個異步過程中判斷執(zhí)行是否完成的解決方案

    node.js多個異步過程中判斷執(zhí)行是否完成的解決方案

    這篇文章主要給大家介紹了關(guān)于node.js多個異步過程中判斷執(zhí)行是否完成的幾種解決方案,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2017-12-12
  • node.js如何自定義實現(xiàn)一個EventEmitter

    node.js如何自定義實現(xiàn)一個EventEmitter

    我們了解到,Node采用了事件驅(qū)動機制,而EventEmitter就是Node實現(xiàn)事件驅(qū)動的基礎(chǔ),本文主要介紹了node.js自定義實現(xiàn)EventEmitter,感興趣的可以了解一下
    2021-07-07
  • node?NPM庫string-random生成隨機字符串學(xué)習(xí)使用

    node?NPM庫string-random生成隨機字符串學(xué)習(xí)使用

    這篇文章主要為大家介紹了node?NPM庫string-random生成隨機字符串學(xué)習(xí)使用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • 基于NodeJS+MongoDB+AngularJS+Bootstrap開發(fā)書店案例分析

    基于NodeJS+MongoDB+AngularJS+Bootstrap開發(fā)書店案例分析

    這章的目的是為了把前面所學(xué)習(xí)的內(nèi)容整合一下,這個示例完成一個簡單圖書管理模塊,因為中間需要使用到Bootstrap這里先介紹Bootstrap
    2017-01-01
  • Node版本升級和降級之node版本管理工具nvm詳解

    Node版本升級和降級之node版本管理工具nvm詳解

    nvm是管理node版本的工具,一個電腦中可以安裝多個node版本,當(dāng)我們想使用哪個版本就切換成哪個版本,而nvm則是提供切換node版本的工具,這篇文章主要給大家介紹了關(guān)于Node版本升級和降級之node版本管理工具nvm的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • 詳解用node-images 打造簡易圖片服務(wù)器

    詳解用node-images 打造簡易圖片服務(wù)器

    本篇文章主要介紹了詳解用node-images 打造簡易圖片服務(wù)器,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • 利用PM2部署node.js項目的方法教程

    利用PM2部署node.js項目的方法教程

    pm2 = P (rocess) M (anager)2,是可以用于生產(chǎn)環(huán)境的Nodejs的進程管理工具,并且它內(nèi)置一個負載均衡。下面這篇文章主要給大家介紹了利用PM2部署node.js項目的方法教程,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-05-05
  • Node.js獲取本機Mac地址的兩種方案

    Node.js獲取本機Mac地址的兩種方案

    有時候我們的項目中可能會有日志記錄的功能或者其他需要ip的功能,于是這時我們需要獲取用戶的ip地址或mac地址,下面這篇文章主要給大家介紹了關(guān)于Node.js獲取本機Mac地址的兩種方案,需要的朋友可以參考下
    2022-09-09
  • Node.js 回調(diào)函數(shù)實例詳解

    Node.js 回調(diào)函數(shù)實例詳解

    這篇文章主要介紹了Node.js 回調(diào)函數(shù)實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • node連接kafka2.0實現(xiàn)方法示例

    node連接kafka2.0實現(xiàn)方法示例

    這篇文章主要介紹了node連接kafka2.0,nodejs連接kafka2.0的實現(xiàn)方法,結(jié)合實例形式分析了kafka2.0的功能、原理、以及node.js連接kafka2.0的具體實現(xiàn)技巧,需要的朋友可以參考下
    2023-05-05

最新評論