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使用prototype定义对象类型(转)[
Dec 22 Javascript
详解JavaScript的流程控制语句
Nov 30 Javascript
第四篇Bootstrap网格系统偏移列和嵌套列
Jun 21 Javascript
JavaScript实现Java中Map容器的方法
Oct 09 Javascript
jquery心形点赞关注效果的简单实现
Nov 14 Javascript
ES6学习之变量的解构赋值
Feb 12 Javascript
原生js实现瀑布流布局
Mar 08 Javascript
vue-resouce设置请求头的三种方法
Sep 12 Javascript
React Native实现地址挑选器功能
Oct 24 Javascript
javascript实现QQ空间相册展示源码
Dec 12 Javascript
解决vuejs 使用value in list 循环遍历数组出现警告的问题
Sep 26 Javascript
基于原生js实现判断元素是否有指定class名
Jul 11 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
菜鸟学PHP之Smarty入门
2007/01/04 PHP
php 缩略图实现函数代码
2011/06/23 PHP
解析PHP处理换行符的问题 \r\n
2013/06/13 PHP
php检查字符串中是否包含7位GSM字符的方法
2015/03/17 PHP
PHP模板引擎Smarty中的保留变量用法分析
2016/04/11 PHP
解决php extension 加载顺序问题
2019/08/16 PHP
jQuery select的操作实现代码
2009/05/06 Javascript
Javascript 获取字符串字节数的多种方法
2009/06/02 Javascript
JavaScript入门之事件、cookie、定时等
2011/10/21 Javascript
Jquery实现textarea根据文本内容自适应高度
2015/04/03 Javascript
AngularJS实现ajax请求的方法
2016/11/22 Javascript
jQuery实现弹幕效果
2017/02/17 Javascript
微信小程序城市定位的实现实例(获取当前所在国家城市信息)
2017/05/17 Javascript
JS实现简易的图片拖拽排序实例代码
2017/06/09 Javascript
JavaScript 基础表单验证示例(纯Js实现)
2017/07/20 Javascript
vue-cli项目中怎么使用mock数据
2017/09/27 Javascript
JS脚本加载后执行相应回调函数的操作方法
2018/02/28 Javascript
Vue.directive()的用法和实例详解
2018/03/04 Javascript
JavaScript实现模态对话框实例
2020/01/13 Javascript
vue实现前端分页完整代码
2020/06/17 Javascript
[00:18]天涯墨客三技能展示
2018/08/25 DOTA
Python对小数进行除法运算的正确方法示例
2014/08/25 Python
Python 自动补全(vim)
2014/11/30 Python
python飞机大战pygame游戏框架搭建操作详解
2019/12/17 Python
Python xlwt模块使用代码实例
2020/06/10 Python
python用什么编辑器进行项目开发
2020/06/17 Python
Hobbs官方网站:英国奢华女性时尚服装
2020/02/22 全球购物
违反工作纪律检讨书
2014/02/15 职场文书
消防安全责任书
2014/04/14 职场文书
清正廉洁演讲稿
2014/05/22 职场文书
乡镇群众路线整改落实情况汇报
2014/10/28 职场文书
病人家属写给医院的感谢信
2015/01/23 职场文书
导游词之河姆渡遗址博物馆
2019/10/10 职场文书
2020优秀员工演讲稿(三篇)
2019/10/17 职场文书
使用Html+Css实现简易导航栏功能(导航栏遇到鼠标切换背景颜色)
2021/04/07 HTML / CSS
sql中mod()函数取余数的用法
2021/05/29 SQL Server