实时通信框架 Socket.IO
Posted 性能与架构
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实时通信框架 Socket.IO相关的知识,希望对你有一定的参考价值。
主要内容:
1. Socket.IO 是什么?有什么特点
2. 实际应用的案例
3. 动手开发一个小示例
Socket.IO 简介
Socket.IO 可以实现实时双向基于事件的通信,专注于速度和可靠性,官方称其是最快的和最可靠的实时引擎
Socket.IO 支持非常全面的通信机制,包括 :
WebSocket
Adobe Flash Socket
AJAX长轮询
AJAX multipart streaming
持久Iframe
JSONP轮询
Socket.IO 根据浏览器的支持情况自动选择最佳方式
Socket.IO 完全由javascript实现,基于Node.js,浏览器中引用Socket.IO的JS文件,服务器中使用Node.js创建一个server,只需很少的代码就可以实现实时通信
Socket.IO 有很丰富的扩展,例如 :
Netty-socketio
java 版本的Socket.IO serversocket.io-client-java
java客户端实现,可用于androidSiosocket
iOS客户端实现socket.io-mongo
MongoDB的适配器socket.io-redis
Redis的适配器
应用案例
浏览器中的 Linux 终端 - tty.js
tty.js 可以让我们在页面中操作Linux服务器,就像使用正常的SSH客户端一样实时执行命令
tty.js就是基于 socket.io 实现,体验非常顺畅,也很稳定
起步实践
目标
在页面中实时动态显示server的时间
实现
安装 socket.io
npm install socket.io
服务器端代码 server-clock.js
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.get('/', function(req, res){
res.sendfile('server-clock.html');
});
io.on('connection', function(socket){
console.log('a user connected');
});
function tick(){
var now = new Date().toUTCString();
io.emit('time', now);
}
setInterval(tick, 1000);
http.listen(3000, function(){
console.log('listening on *:3000');
});
客户端代码 server-clock.html
<script ></script>
<script>
var socket = io();
socket.on('time', function (time){
document.getElementById('time').innerHTML = time;
});
</script>
<body>
Current server time is:
<b><span id="time"></span></b>
</body>
测试
启动
node server-clock.js
浏览器中访问
http://localhost:3000/
效果
小结
socket.io 的应用非常广泛,很可靠,如果有实时通信的需求,可以考虑下
点击 “阅读原文” 查看 文章列表
以上是关于实时通信框架 Socket.IO的主要内容,如果未能解决你的问题,请参考以下文章