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提示 &quot;object expected&quot;的解决方法
Dec 13 Javascript
(跨浏览器基础事件/浏览器检测/判断浏览器)经验代码分享
Jan 24 Javascript
javascript实现网页中涉及的简易运动(改变宽高、透明度、位置)
Nov 29 Javascript
jQuery Chart图表制作组件Highcharts用法详解
Jun 01 Javascript
vuejs在解析时出现闪烁的原因及防止闪烁的方法
Sep 19 Javascript
webpack4与babel配合使es6代码可运行于低版本浏览器的方法
Oct 12 Javascript
使用jquery Ajax实现上传附件功能
Oct 23 jQuery
微信小程序Flex布局用法深入浅出分析
Apr 25 Javascript
微信小程序实现批量倒计时功能
Nov 01 Javascript
Jquery+javascript实现支付网页数字键盘
Dec 21 jQuery
Vue中ref和$refs的介绍以及使用方法示例
Jan 11 Vue.js
微信小程序用户授权最佳实践指南
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
PHP实现图片上传并压缩
2015/12/22 PHP
PHP实现普通hash分布式算法简单示例
2018/08/06 PHP
js wmp操作代码小结(音乐连播功能)
2008/11/08 Javascript
javascript实现的一个带下拉框功能的文本框
2014/05/08 Javascript
判断字符串的长度(优化版)中文占两个字符
2014/10/30 Javascript
javascript原生ajax写法分享
2016/04/10 Javascript
一个用jquery写的判断div滚动条到底部的方法【推荐】
2016/04/29 Javascript
jquery插件autocomplete用法示例
2016/07/01 Javascript
Bootstrap CSS组件之大屏幕展播
2016/12/17 Javascript
js date 格式化
2017/02/15 Javascript
javascript过滤数组重复元素的实现方法
2017/05/03 Javascript
将 vue 生成的 js 上传到七牛的实例
2017/07/28 Javascript
webpack 2的react开发配置实例代码
2017/07/28 Javascript
使用JQ完成表格隔行换色的简单实例
2017/08/25 Javascript
jQuery插件实现的日历功能示例【附源码下载】
2018/09/07 jQuery
JS实现的碰撞检测与周期移动完整示例
2019/09/02 Javascript
Object.keys() 和 Object.getOwnPropertyNames() 的区别详解
2020/05/21 Javascript
python 测试实现方法
2008/12/24 Python
python复制与引用用法分析
2015/04/08 Python
Python中Selenium模拟JQuery滑动解锁实例
2017/07/26 Python
Python2.7+pytesser实现简单验证码的识别方法
2017/12/29 Python
python日期时间转为字符串或者格式化输出的实例
2018/05/29 Python
浅谈Python traceback的优雅处理
2018/08/31 Python
Python简单基础小程序的实例代码
2019/04/28 Python
Python基于Hypothesis测试库生成测试数据
2020/04/29 Python
如何利用pycharm进行代码更新比较
2020/11/04 Python
html5+css3之动画在webapp中的应用
2014/11/21 HTML / CSS
HTML5之tabindex属性全面解析
2016/07/07 HTML / CSS
HTML中meta标签及Keywords
2020/04/15 HTML / CSS
Champs Sports加拿大:北美最大的以商场为基础的专业运动鞋和服装零售商之一
2018/05/01 全球购物
XMLHttpRequest对象在IE和Firefox中创建方式有没有不同
2016/03/23 面试题
商场主管竞聘书
2014/03/31 职场文书
综合管理员岗位职责
2015/02/11 职场文书
护理专业毕业自我鉴定
2019/08/12 职场文书
MySQL 慢查询日志深入理解
2021/04/22 MySQL
利用Python判断整数是否是回文数的3种方法总结
2021/07/07 Python