实时通信框架 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 server

  • socket.io-client-javajava客户端实现,可用于android

  • Siosocket iOS客户端实现

  • socket.io-mongoMongoDB的适配器

  • 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的主要内容,如果未能解决你的问题,请参考以下文章

用于WEB端的即时通讯的框架Socket.IO

用Socket开发一枚小型实时通信App

Socket.IO介绍:支持WebSocket用于WEB端的即时通讯的框架

Vue.js 如何使用 Socket.IO?

autojs双向通信

Socket.IO入门原理