node.js中使用socket.io的方法


Posted in Javascript onDecember 15, 2014

使用socket.io的使用创建一个socket.io服务器即可.但是该服务器依赖于一个已经创建的http服务器.

在http服务器运行之后,使用listen方法为该http服务器附加一个socket.io服务器.

var sio=require("scoket.io");

var socket=sio.listen(server);

socket就是在server基础上创建的一个socket.io服务器.

当客户端与服务器端建立连接时,触发socket.io服务的connection事件.

socket.on("connection",function(socket){

});

回调函数中的socket参数是服务器端与客户端建立连接的socket端口对象.

当接收到客户端发送的消息时,发出socket端口对象的message事件.

socket.on("message",function(msg){

});

回调函数的参数是客户端发送的消息.

可以使用socket.send(msg)向客户端发送一个消息.

当服务器端可客户端的连接断开时触发disconnect事件.

socket.on("disconnect",funciton(){

});

该回调函数不适用任何参数.

服务器端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) {

    console.log("客户端建立连接");

     socket.send("你好");

     socket.on("message", function (msg) {

         console.log("接收到一个消息:"+msg);

     });

     socket.on("disconnect", function () {

         console.log("客户端断开连接.");

     });

 });

创建客户端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("message", function (data) {

             console.log(data);

             socket.send("消息已接受到.")

         });

         socket.on("disconnect", function () {

             console.log("服务器端断开连接.");

         });

     </script>

 </head>

 <body>

 </body>

 </html>

这段代码:/socket.io/socket.io.js有服务器端socket.io类库提供,不需要再客户端实际放置一个socket.io.js文件.

在脚本文件中,首先使用io.connect()方法连接服务器端socket.io服务器.

该方法返回一个与服务器端建立连接的客户端socket端口对象.

当接受到服务器端发送的消息时,触发客户端socket端口对象的message事件.

socket.on("message",function(msg){

});

msg是服务器端发送的数据;

也可以使用客户端的socket对象的send()方法向服务器端发送数据.

socket.send(msg);

当服务器端断开连接时,触发客户端socket端口对象的disconnect事件,

socket.on("disconnect",function(){

})

这个回调函数不使用任何参数.

注意:

客户端的消息机制与服务器端的消息处理机制是完全一致的.因为socket.io确保客户端与服务器端共享相同的API.

运行后的结果:

node.js中使用socket.io的方法

当关闭浏览器是,就断开了与服务器的连接,此时服务器端触发disconnect事件,客户端断开连接.

Javascript 相关文章推荐
JavaScript禁止页面操作的示例代码
Dec 17 Javascript
js跨域访问示例(客户端/服务端)
May 19 Javascript
js图片卷帘门导航菜单特效代码分享
Sep 10 Javascript
javascript实现密码验证
Nov 10 Javascript
vue.js入门教程之基础语法小结
Sep 01 Javascript
利用策略模式与装饰模式扩展JavaScript表单验证功能
Feb 14 Javascript
node实现定时发送邮件的示例代码
Aug 26 Javascript
react中fetch之cors跨域请求的实现方法
Mar 14 Javascript
vue渲染时闪烁{{}}的问题及解决方法
Mar 28 Javascript
vue-socket.io跨域问题有效解决方法
Feb 11 Javascript
vue+ESLint 配置保存 自动格式化代码
Mar 17 Javascript
Vue 中如何将函数作为 props 传递给组件的实现代码
May 12 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
node.js中的fs.readFile方法使用说明
Dec 15 #Javascript
You might like
如何将数据从文本导入到mysql
2006/10/09 PHP
在windows服务器开启php的gd库phpinfo中未发现
2013/01/13 PHP
php绘图中显示不出图片的原因及解决
2014/03/05 PHP
如何打开php的gd2库
2017/02/09 PHP
php redis实现对200w用户的即时推送
2017/03/04 PHP
自己的js工具 Event封装
2009/08/21 Javascript
js获取单元格自定义属性值的代码(IE/Firefox)
2010/04/05 Javascript
javascript权威指南 学习笔记之javascript数据类型
2011/09/24 Javascript
利用NodeJS的子进程(child_process)调用系统命令的方法分享
2013/06/05 NodeJs
jQuery制作拼图小游戏
2015/01/12 Javascript
JS 拼凑字符串的简单实例
2016/09/02 Javascript
jQuery实现表格奇偶行显示不同背景色 就这么简单
2017/03/13 Javascript
JavaScript用二分法查找数据的实例代码
2017/06/17 Javascript
在knockoutjs 上自己实现的flux(实例讲解)
2017/12/18 Javascript
vue input输入框关键字筛选检索列表数据展示
2020/10/26 Javascript
解决layer.confirm快速点击会重复触发事件的问题
2019/09/23 Javascript
微信小程序实现搜索框功能及踩过的坑
2020/06/19 Javascript
深入了解Vue3模板编译原理
2020/11/19 Vue.js
[46:48]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第三局
2016/02/25 DOTA
利用python发送和接收邮件
2016/09/27 Python
Python中标准模块importlib详解
2017/04/16 Python
python 创建弹出式菜单的实现代码
2017/07/11 Python
PyQt5实现登录页面
2020/05/30 Python
Django QuerySet查询集原理及代码实例
2020/06/13 Python
python如何删除列为空的行
2020/07/17 Python
详解Python中的Lock和Rlock
2021/01/26 Python
css3 给页面加个半圆形导航条主要利用旋转和倾斜样式
2014/02/10 HTML / CSS
澳大利亚宠物食品和用品商店:PETstock
2020/01/02 全球购物
同事打架检讨书
2014/02/04 职场文书
信息管理应届生求职信
2014/03/07 职场文书
私用公车造成事故检讨书
2014/11/16 职场文书
2014年社区教育工作总结
2014/12/02 职场文书
《小蝌蚪找妈妈》教学反思
2016/02/23 职场文书
幼儿园中班教学反思
2016/03/03 职场文书
话题作文之诚信
2019/11/28 职场文书
深度学习详解之初试机器学习
2021/04/14 Python