文档章节

用C(++)和Websocket实现实时通讯

w
 wahahachuang4
发布于 2017/05/02 12:55
字数 1044
阅读 18
收藏 0

说到websocket大家一定不会陌生,WebSocket是HTML5一种新的协议。它实现了浏览器与服务器全双工通信(full-duplex)。一开始的握手需要借助HTTP请求完成,当浏览器和服务器握手成功后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。有了websocket, 大家就可以摒弃以往用轮询来实现实时通讯的方式了。 有了websocket后,应运而生的相关产品也不在少数,选择也成了最大的问题,在这里你可能会说“干嘛用别人的,我可以自己用原始的开发一个啊” 对此我只想说你真NB,我也很想知道你是如何解决以下问题的:

  1. 你是打算花1个月,2个月还是1年还实现一个websocket通信的?如果你说你打算花一个月,那说明两点,你的技术要上天了(这么刁的东西你可以那么快弄出来还不存在性能问题,除了我现有的膝盖,请把我下辈子的膝盖也拿走),贵公司土豪(贵公司对技术的炙热追求已经达到了行业的巅峰了,看来你们的项目不是很紧嘛,预算挺多嘛,告诉我贵公司的名字我也来钻研技术,哈哈哈)
  2. Websocket只支持ie10+, chrome, firefox, safari, opera. 不说多了,当前IE9及低版本的用户群体还有很多,你是怎么觉得这些低版本浏览器的实时通讯的? 上面两个问题无非就是涉及到两方面问题:开发成本和浏览器兼容性问题。站在管理者角度来看,都希望尽可能多的压缩开发成本,所有选择第三方推送服务是众多企业的一个理性选择。 选择产品时需要注意以下几点:
  3. 代码结构是否清晰易懂
  4. 消息到达率怎么样,数据到达情况是否可视
  5. 浏览器兼容性如何
  6. 产品的稳定性和安全性 好,重点来了,我不去评判其他产品的优缺点,只给出我对我最终选择的产品-GoEasy推送作一个单方面的评价。GoEasy推送满足我上面列的所有指标。
  7. 代码结构是否清晰易懂 GoEasy的代码分为订阅和推送两部分: 订阅时,只需要三句代码: a. 引入goeasy.js (文件非常小)

<script type="text/javascript" src="http://cdn.goeasy.io/goeasy.js"></script>

b. 创建goeasy实例 var goEasy = new GoEasy({appkey: 'appkey'}); c. 订阅channel. goEasy. subscribe({ channel: 'channel1', onMessage: function(message){ alert('Meessage received:'+message.content);//接收到推送的消息 } }); 推送时,用goeasy提供的restful api来实现,api只需要三个参数即可: URL: http://goeasy.io/goeasy/publish Method: Post Parameters: appkey, channel, content 2. 消息到达率怎么样,数据到达情况是否可视 我们项目的用户并发量目前最高在300人的样子,每天会推送30条消息的样子,每条消息的到达情况都可以在goeasy后台页面进行查看。至于到达率,我们项目的对到达率的要求是98%, 就目前来看GoEasy应该是100%的到达率。 3. 浏览器兼容性如何 除了常用的浏览器chrome, firefox, safari, opera外还支持IE 6到IE11的版本,低版本IE浏览器GoEasy采用的是polling的方式。GoEasy在兼容性这方面做的很不错。 4. 产品的稳定性和安全性 稳定性的判定:项目已经持续运行了4个月了,没有出现过消息推不出或接收不到的情况。 安全性的判定:GoEasy在安全控制方面主要是通过appkey来控制,创建好app后系统会生成两个key,一个既可以用来接收又可以用来推送,另一个只可以用来接收。所以用户可以选择性的暴露你的key. 这样轻松用C(++)实现客户端与服务器端的实时通信了。 C(++) websocket实时消息推送

© 著作权归作者所有

共有 人打赏支持
w
粉丝 0
博文 6
码字总数 2957
作品 0
成都
私信 提问
WebSocket 是什么原理?为什么可以实现持久连接?

作者:腾讯云技术社区 众所周知,Web应用的通信过程通常是客户端通过浏览器发出一个请求,服务器端接收请求后进行处理并返回结果给客户端,客户端浏览器将信息呈现。这种机制对于信息变化不是...

xiaogong1688
06/29
0
0
WebSocket使用教程 - 带完整实例

什么是WebSocket?看过html5的同学都知道,WebSocket protocol 是HTML5一种新的协议。它是实现了浏览器与服务器全双工通信(full-duplex)。HTML5定义了WebSocket协议,能更好的节省服务器资源...

james_laughing
2014/12/18
0
7
HTML5 WebSocket JavaWeb 实现简单的聊天室功能

本实例使用websocket实现了即时聊天系统,websocket技术可以在网页中使用js技术完成与后台的通讯, 而后台tomcat集成了websocket功能, 只需要很少的代码就可以完成很强大的功能, 基于此聊天系...

智慧点点
04/23
0
0
Spring实践--Websocket集成和XML配置

WebSocket 简介 WebSocket 是 HTML5 一种新的协议。它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯,它建立在 TCP 之上,同 HTTP 一样通过 TCP 来传输数据,...

spinachgit
05/03
0
0
从HTML5 WebSocket到Socket.io

HTML5 WebSocket 作为新一代的web标准,HTML5为我们提供了很多有用的东西,比如canvas,本地存储(已经分离出去了),多媒体编程接口,当然还有我们的WebSocket。WebSocket是HTML5开始提供的...

Srtian
05/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

nignx的部署安装和反向代理

3、安装Nginx #yum update 更新一些库和必要的支持,完了之后去下载一个nginx的最新版,如今我责编的版本是1.7.7: #wget http://nginx.org/download/nginx-1.13.6.tar.gz 解压缩 #tar -zvxf n...

wangxujun59
22分钟前
2
0
将博客搬至CSDN

搬家

JackChenzp
27分钟前
2
0
lamba表达式

Java 8 lambda表达式示例 我个人对Java 8发布非常激动,尤其是lambda表达式和流API。越来越多的了解它们,我能写出更干净的代码。虽然一开始并不是这样。第一次看到用lambda表达式写出来的J...

os1cheng
29分钟前
2
0
jenkins: Opening Robot Framework log failed

6down vote Answer is explained at Jenkins issue tracking system: https://issues.jenkins-ci.org/browse/JENKINS-32118 For resolve your problem you must : Connect on your jenkins u......

关上越
37分钟前
1
0
CentOS7 ab压力测试安装与解释

原 CentOS7 ab压力测试安装与解释 2017年11月10日 18:43:25 moTzxx 阅读数:4889更多 个人分类: Centos7 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u0...

linjin200
39分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部