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技术-屏蔽类
Aug 15 Javascript
Jquery 实现Tab效果 思路是js思路
Mar 02 Javascript
JQuery 常用操作代码
Mar 14 Javascript
超简单的jquery的AJAX用法
May 10 Javascript
jQuery 源码分析笔记(5) jQuery.support
Jun 19 Javascript
JQuery中使用Ajax赋值给全局变量异常的解决方法
Jan 10 Javascript
JS和函数式语言的三特性
Mar 05 Javascript
jquery预加载图片的方法
May 27 Javascript
JS自定义选项卡函数及用法实例分析
Sep 02 Javascript
jQuery html表格排序插件tablesorter使用方法详解
Feb 10 Javascript
Vue props 单向数据流的实现
Nov 06 Javascript
TypeScript实用技巧 Nominal Typing名义类型详解
Sep 23 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实现多级树型菜单
2006/10/09 PHP
浅析php fwrite写入txt文件的时候用 \r\n不能换行的问题
2013/08/06 PHP
php实现的简单中文验证码功能示例
2017/01/03 PHP
PHP+ajax实现获取新闻数据简单示例
2018/05/08 PHP
php实现小程序支付完整版
2018/10/09 PHP
JQuery通过Ajax提交表单并返回结果
2011/07/31 Javascript
JavaScript高级程序设计(第3版)学习笔记2 js基础语法
2012/10/11 Javascript
Jquery写一个鼠标拖动效果实现原理与代码
2012/12/24 Javascript
jquery复选框checkbox实现删除前判断
2014/04/20 Javascript
javascript中bind函数的作用实例介绍
2014/09/28 Javascript
js中document.write的那点事
2014/12/12 Javascript
js判断是否按下了Shift键的方法
2015/01/27 Javascript
js实现下拉列表选中某个值的方法(3种方法)
2015/12/17 Javascript
JS判断图片是否加载完成方法汇总(最新版)
2016/05/13 Javascript
Javascript基础_标记文字的实现方法
2016/06/14 Javascript
javascript深拷贝的原理与实现方法分析
2017/04/10 Javascript
react-native fetch的具体使用方法
2017/11/01 Javascript
vue打包后显示空白正确处理方法
2017/11/01 Javascript
基于vue实现可搜索下拉框定制组件
2020/03/26 Javascript
开发用到的js封装方法(20种)
2018/10/12 Javascript
浅析Proxy可以优化vue的数据监听机制问题及实现思路
2018/11/29 Javascript
webpack.DefinePlugin与cross-env区别详解
2020/02/23 Javascript
解决VUE mounted 钩子函数执行时 img 未加载导致页面布局的问题
2020/07/27 Javascript
[01:59]DOTA2首部纪录片《Free to play》预告片
2014/03/12 DOTA
python访问纯真IP数据库的代码
2011/05/19 Python
Python中使用Boolean操作符做真值测试实例
2015/01/30 Python
构建Python包的五个简单准则简介
2015/06/15 Python
Python数据结构之哈夫曼树定义与使用方法示例
2018/04/22 Python
python学生信息管理系统(完整版)
2020/04/05 Python
Python利用sqlacodegen自动生成ORM实体类示例
2019/06/04 Python
一款纯css3实现的颜色渐变按钮的代码教程
2014/11/12 HTML / CSS
印度最大的网上花店:Ferns N Petals(鲜花、礼品和蛋糕)
2017/10/16 全球购物
南京导游词
2015/02/03 职场文书
2016年会开场白台词
2015/06/01 职场文书
SqlServer 垂直分表(减少程序改动)
2021/04/16 SQL Server
前端传参数进行Mybatis调用mysql存储过程执行返回值详解
2022/08/14 MySQL