node.js中的socket.io入门实例
关于websocket等反向ajax技术介绍
在实时web应用中,常见的方法是反向Ajax。反向Ajax的定义:
反向Ajax(ReverseAjax)本质上则是这样的一种概念:能够从服务器端向客户端发送数据。在一个标准的HTTPAjax请求中,数据是发送给服务器端的,反向Ajax可以某些特定的方式来模拟发出一个Ajax请求,这些方式本文都会论及,这样的话,服务器就可以尽可能快地向客户端发送事件(低延迟通信)。
反向Ajax技术主要有两点内容:一是服务器端保持住TCP连接直到其有数据发送给客户端(可以使用循环和睡眠实现),二是客户端js编程技巧。
websocket是html5的规范,也属于反ajax技术。
socket.io实现反向AJAX技术实例
socket.io官方介绍:
Socket.IOaimstomakerealtimeappspossibleineverybrowserandmobiledevice,blurringthedifferencesbetweenthedifferenttransportmechanisms.It"scare-freerealtime100%inJavaScript.Inordertoproviderealtimeconnectivityoneverybrowser,Socket.IOselectsthemostcapabletransportatruntime,withoutitaffectingtheAPI.WebSocketAdobe®Flash®SocketAJAXlongpollingAJAXmultipartstreamingForeverIframeJSONPPolling
简单来说socket.io是一个基于nodejs的库,其对多种反向ajax技术进行了包装并统一了接口。在运行时候socket.io自动根据浏览器的情况选择合适的反向ajax技术与socket.io服务器进行交互。如果说websocket等技术是规范的话,那么socket.io则属于应用。
下面说一下如何安装(作者使用LinuxMint16):
安装node.js:
输入命令nodejs即可进入shell模式。
安装npm:
安装socket.io:
安装包存放在~/node_modules目录下,客户端socket.io.js存放在~/node_modules/socket.io/node_modules/socket.io-client/dist目录下。
socket.io示例
以下示例来自官方网站并做了适当修改。
首先建立server端(服务端)代码(文件test.js):
vario=require("socket.io").listen(8080);
io.sockets.on("connection",function(socket){
socket.emit("news",{hello:"world"});
socket.on("myotherevent",function(data){
console.log(data);
});
});
服务端test.js绑定了8080端口,当一个客户端连接服务端test.js时候,服务端test.js向客户端发出news指令并传送数据{hello:"world"};而服务端test.js收到myotherevent指令时候会调用回调函数function(data){console.log(data);}来处理接收到的数据data。
笔者搭建了nginx服务器,其使用的80端口,web根目录为/usr/share/nginx/html。将~/node_modules/socket.io/node_modules/socket.io-client/dist下的socket.io.min.js复制到web根目录,并在在web根目录下建立文件index.php(作为客户端),内容如下:
<html>
<head>
</head>
<scriptsrc="socket.io.min.js"></script>
<body>
<script>
varsocket=io.connect("http://localhost:8080");
socket.on("news",function(data){
console.log(data);
console.log(data["hello"]);
socket.emit("myotherevent",{my:"data"});
});
</script>
</body>
</html>
上面代码中,socket绑定了8080端口,也就是绑定了server端。socket.on()指定了当收到news指令时候,应该如何处理收到的指令对应的数据,socket.emit()向server端发送指令和数据。
运行server端:
运行客户端并进行观察:打开浏览器,进入http://127.0.0.1访问index.php,并打开firebug查看信息。
上图显示了服务端test.js的处理过程。
上图是客户端index.php第2次向服务端test.js发送的http头。使用了websocket规范。
分析结束。
相关文章
- js清除浏览器缓存的几种方法(项目总结)「建议收藏」
- php 中js跳转页面跳转页面,js跳转代码_PHP页面跳转 Js页面跳转代码[通俗易懂]
- JS设置定时器_js设置定时器
- js 数组去除重复数据-5 个提升你 JS 编码水平的实例
- 利用Node.js实现对MS SQL服务器的连接(node连MSsql)
- JS技术连接Oracle数据库实现数据交互(js连接oracle实例)
- Oracle中JS的优势让数据库性能提升(oracle中 js)
- js操作符实例代码
- JS等比例缩小图片尺寸的实例
- 利用js的Node遍历找到repeater的一个字段实例介绍
- js中复制行和删除行的操作实例
- JS调用CS里的带参方法实例
- js中Image对象以及对其预加载处理示例
- js实现单行文本向上滚动效果实例代码
- js获取url参数代码实例分享(JS操作URL)
- node.js使用nodemailer发送邮件实例
- php使用正则过滤js脚本代码实例
- 使用Node.js实现一个简单的FastCGI服务器实例
- node.js中的Socket.IO使用实例
- 原生JS绑定滑轮滚动事件兼容常见浏览器
- JS长整型精度问题实例分析
- js实现在同一窗口浏览图片