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


Posted in Javascript onDecember 15, 2014

socket.io类库不但可以相互发送消息,而且还可以通过socket端口对象的emit方法互相发送事件.

emit在之前的事件上说过现在一句话带过:emit是用来手动触发事件的.

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

});

在使用emit方法发送事件时,可以再另一端使用socket端口对象的on方法会once方法监听.

socket.on(event,function(data,fn){

});

socket.once(event,function(data,fn){

})

上面的回调函数中的参数data:对方发送的事件中携带的数据,

fn:对方在发送事件时指定的callback回调函数.

案例1:当服务器和客户端连接后,向客户端发送一个news事件,事件中携带一个对象,该对象的hello属性值为"你好".在接收到客户端发送my other event事件时,在控制台中输出"服务器端就收到数据"+客户端发送事件中携带的数据.

服务器端代码,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,{"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("服务器端接受到信息%j",data);

     });

 });

客户端index.html代码:

 <!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>

运行结果:、
 

node中socket.io的事件使用详解
可以发现一点:执行总是在监听端,而不是手动执行端.

案例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,{"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);

     });

 });
 <!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>

执行结果:

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

回调函数实在触发端执行的.

Javascript 相关文章推荐
javascript操作cookie_获取与修改代码
May 21 Javascript
屏蔽Flash右键信息的js代码
Jan 17 Javascript
详谈 Jquery Ajax异步处理Json数据.
Sep 09 Javascript
javascript实现文字图片上下滚动的具体实例
Jun 28 Javascript
jquery获取iframe中的dom对象(两种方法)
Jul 02 Javascript
JavaScript获取onclick、onchange等事件值的代码
Jul 22 Javascript
JavaScript sub方法入门实例(把字符串显示为下标)
Oct 17 Javascript
node.js中的console.warn方法使用说明
Dec 09 Javascript
js方法数据验证的简单实例
Sep 17 Javascript
JS实现电商放大镜效果
Aug 24 Javascript
Vue 多层组件嵌套二种实现方式(测试实例)
Sep 08 Javascript
Vuex模块化应用实践示例
Feb 03 Javascript
node.js中使用socket.io的方法
Dec 15 #Javascript
Lua表达式和控制结构学习笔记
Dec 15 #Javascript
如何在node的express中使用socket.io
Dec 15 #Javascript
node.js中使用socket.io制作命名空间
Dec 15 #Javascript
node.js中的fs.fstatSync方法使用说明
Dec 15 #Javascript
node.js中的fs.fstat方法使用说明
Dec 15 #Javascript
node.js中的fs.readFileSync方法使用说明
Dec 15 #Javascript
You might like
打造计数器DIY三步曲(上)
2006/10/09 PHP
如何跨站抓取别的站点的页面的补充
2006/10/09 PHP
php db类库进行数据库操作
2009/03/19 PHP
PHP教程 变量定义
2009/10/23 PHP
php模拟服务器实现autoindex效果的方法
2015/03/10 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
2020/03/27 PHP
一个对于js this关键字的问题
2007/01/09 Javascript
网页javascript精华代码集
2007/01/24 Javascript
基于jquery实现的类似百度搜索的输入框自动完成功能
2011/08/23 Javascript
javascript中Object使用详解
2015/01/26 Javascript
jQuery实现带动画效果的二级下拉导航方法
2015/03/11 Javascript
JavaScript通过this变量快速找出用户选中radio按钮的方法
2015/03/23 Javascript
jQuery插件easyUI实现通过JS显示Dialog的方法
2016/09/16 Javascript
Jquery根据浏览器窗口改变调整大小的方法
2017/02/07 Javascript
老生常谈js中的MVC
2017/07/25 Javascript
vue项目实战总结篇
2018/02/11 Javascript
使用FileReader API创建Vue文件阅读器组件
2018/04/03 Javascript
详解React服务端渲染从入门到精通
2019/03/28 Javascript
如何实现js拖拽效果及原理解析
2020/05/08 Javascript
Python+PIL实现支付宝AR红包
2018/02/09 Python
对Python3中的input函数详解
2018/04/22 Python
利用Python对文件夹下图片数据进行批量改名的代码实例
2019/02/21 Python
纯CSS3实现的8种Loading动画效果
2014/07/05 HTML / CSS
HTML5 canvas绘制的玫瑰花效果
2014/05/29 HTML / CSS
兰芝美国网上商城:购买LANEIGE睡眠面膜等
2017/06/30 全球购物
Java程序员面试90题
2013/10/19 面试题
医学生实习自荐信
2013/10/01 职场文书
乐观大学生的自我评价
2014/01/10 职场文书
出纳会计岗位职责
2014/03/12 职场文书
四年级评语大全
2014/04/21 职场文书
商务英语专业毕业生求职信
2014/07/06 职场文书
婚育证明样本
2015/06/16 职场文书
红领巾广播站广播稿
2015/08/19 职场文书
2016参观监狱警示教育活动心得体会
2016/01/15 职场文书
《弟子规》读后感:知廉耻、明是非、懂荣辱、辨善恶
2019/12/03 职场文书
windows11选中自动复制怎么开启? Win11自动复制所选内容的方法
2022/07/23 数码科技