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 相关文章推荐
Jquery中巧用Ajax的beforeSend方法
Jan 20 Javascript
使用jQuery操作DOM的方法小结
Feb 27 Javascript
jQuery EasyUI Panel面板组件使用详解
Feb 28 Javascript
bootstrap datetimepicker 日期插件在火狐下出现一条报错信息的原因分析及解决办法
Mar 08 Javascript
Vue 过渡实现轮播图效果
Mar 27 Javascript
javascript闭包功能与用法实例分析
Apr 06 Javascript
angularJS的radio实现单项二选一的使用方法
Feb 28 Javascript
JS实现字符串翻转的方法分析
Aug 31 Javascript
JavaScript 2018 中即将迎来的新功能
Sep 21 Javascript
vue2.x集成百度UEditor富文本编辑器的方法
Sep 21 Javascript
使用localStorage替代cookie做本地存储
Sep 25 Javascript
基于JavaScript实现表格隔行换色
May 08 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
根德YB400的电路分析
2021/03/02 无线电
使用php-timeit估计php函数的执行时间
2015/09/06 PHP
Yii多表联合查询操作详解
2016/06/02 PHP
Yii 2.0实现联表查询加搜索分页的方法示例
2017/08/02 PHP
jQuery ui1.7 dialog只能弹出一次问题
2009/08/27 Javascript
使用Chrome调试JavaScript的断点设置和调试技巧
2014/12/16 Javascript
jQuery判断checkbox选中状态
2016/05/12 Javascript
js中的面向对象入门
2017/03/06 Javascript
Jquery把获取到的input值转换成json
2017/05/15 jQuery
Vue-router结合transition实现app前进后退动画切换效果的实例
2017/10/11 Javascript
Angular4自制一个市县二级联动组件示例
2017/11/21 Javascript
深入理解JavaScript 中的匿名函数((function() {})();)与变量的作用域
2018/08/28 Javascript
推荐一个基于Node.js的表单验证库
2019/02/15 Javascript
重学JS 系列:聊聊继承(推荐)
2019/04/11 Javascript
jQuery实现form表单基于ajax无刷新提交方法实例代码
2019/11/04 jQuery
[17:36]VG战队纪录片
2014/08/21 DOTA
用Python制作简单的朴素基数估计器的教程
2015/04/01 Python
Python实现的中国剩余定理算法示例
2017/08/05 Python
在python中将字符串转为json对象并取值的方法
2018/12/31 Python
详解Numpy数组转置的三种方法T、transpose、swapaxes
2019/05/27 Python
基于Django signals 信号作用及用法详解
2020/03/28 Python
win7上tensorflow2.2.0安装成功 引用DLL load failed时找不到指定模块 tensorflow has no attribute xxx 解决方法
2020/05/20 Python
Python中logging日志记录到文件及自动分割的操作代码
2020/08/05 Python
Python 添加文件注释和函数注释操作
2020/08/09 Python
CSS3教程(6):创建网站多列
2009/04/02 HTML / CSS
HTML5之SVG 2D入门6—视窗坐标系与用户坐标系及变换概述
2013/01/30 HTML / CSS
美国滑雪和滑雪板商店:Buckman
2018/03/03 全球购物
日本乐天德国站:Rakuten.de
2019/05/16 全球购物
Spartoo美国:欧洲排名第一的在线时装零售商
2019/12/12 全球购物
系统管理员的职责包括那些?管理的对象是什么?
2013/01/18 面试题
幼儿园安全责任书
2014/04/14 职场文书
五月的鲜花活动方案
2014/08/21 职场文书
刑事上诉状(无罪)
2015/05/23 职场文书
你有一份《诚信考试承诺书》待领取
2019/11/13 职场文书
36个正则表达式(开发效率提高80%)
2021/11/17 Javascript
JS前端监控采集用户行为的N种姿势
2022/07/23 Javascript