前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实时通信框架 Socket.IO

实时通信框架 Socket.IO

作者头像
dys
发布2018-04-04 11:44:44
2.4K0
发布2018-04-04 11:44:44
举报
文章被收录于专栏:性能与架构

主要内容: 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

代码语言:javascript
复制
npm install socket.io

服务器端代码 server-clock.js

代码语言:javascript
复制
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

代码语言:javascript
复制
<script src="/socket.io/socket.io.js"></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>

测试

启动

代码语言:javascript
复制
node server-clock.js

浏览器中访问

代码语言:javascript
复制
http://localhost:3000/

效果

小结

socket.io 的应用非常广泛,很可靠,如果有实时通信的需求,可以考虑下

官网地址:http://socket.io

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-01-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA高性能架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Socket.IO 简介
  • 应用案例
    • 浏览器中的 Linux 终端 - tty.js
    • 起步实践
      • 目标
        • 实现
          • 测试
          • 小结
          相关产品与服务
          云数据库 Redis
          腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档