`
sanrenxing_1
  • 浏览: 17176 次
社区版块
存档分类
最新评论

用Python和Websocket实现实时通讯

 
阅读更多

说到websocket大家一定不会陌生,WebSocketHTML5一种新的协议。它实现了浏览器与服务器全双工通信(full-duplex)。一开始的握手需要借助HTTP请求完成,当浏览器和服务器握手成功后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。有了websocket, 大家就可以摒弃以往用轮询来实现实时通讯的方式了。
有了websocket后,应运而生的相关产品也不在少数,选择也成了最大的问题,在这里你可能会说“干嘛用别人的,我可以自己用原始的开发一个啊”对此我只想说你真NB,我也很想知道你是如何解决以下问题的:
1.        你是打算花1个月,2个月还是1年还实现一个websocket通信的?如果你说你打算花一个月,那说明两点,你的技术要上天了(这么刁的东西你可以那么快弄出来还不存在性能问题,除了我现有的膝盖,请把我下辈子的膝盖也拿走),贵公司土豪(贵公司对技术的炙热追求已经达到了行业的巅峰了,看来你们的项目不是很紧嘛,预算挺多嘛,告诉我贵公司的名字我也来钻研技术,哈哈哈)
2.        Websocket只支持ie10+, chrome, firefox, safari, opera. 不说多了,当前IE9及低版本的用户群体还有很多,你是怎么觉得这些低版本浏览器的实时通讯的?
上面两个问题无非就是涉及到两方面问题:开发成本和浏览器兼容性问题。站在管理者角度来看,都希望尽可能多的压缩开发成本,所有选择第三方推送服务是众多企业的一个理性选择。
选择产品时需要注意以下几点:
1.        代码结构是否清晰易懂
2.        消息到达率怎么样,数据到达情况是否可视
3.        浏览器兼容性如何
4.        产品的稳定性和安全性
好,重点来了,我不去评判其他产品的优缺点,只给出我对我最终选择的产品-GoEasy推送作一个单方面的评价。GoEasy推送满足我上面列的所有指标。
1.        代码结构是否清晰易懂
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 6IE11的版本,低版本IE浏览器GoEasy采用的是polling的方式。GoEasy在兼容性这方面做的很不错。
4.        产品的稳定性和安全性
稳定性的判定:项目已经持续运行了4个月了,没有出现过消息推不出或接收不到的情况。
安全性的判定:GoEasy在安全控制方面主要是通过appkey来控制,创建好app后系统会生成两个key,一个既可以用来接收又可以用来推送,另一个只可以用来接收。所以用户可以选择性的暴露你的key.
这样轻松用Python实现客户端与服务器端的实时通信了。
 Pythonwebsocket实时消息推送
分享到:
评论

相关推荐

    python加django加websocket实现即时通讯

    Python作为一门强大且易学的编程语言,结合Django框架和WebSocket技术,可以有效地构建实时交互的Web应用。本篇文章将深入探讨如何利用Python与Django结合WebSocket来实现即时通讯功能。 首先,我们要理解WebSocket...

    利用websocket实现即时通讯,支持语音图片分段发送

    在"利用WebSocket实现即时通讯,支持语音图片分段发送"这个项目中,开发者已经提供了SpringBoot服务器端的代码以及Android客户端的实现。SpringBoot是一个流行的Java框架,用于快速构建微服务应用。它内置了...

    基于websocket实现浏览器端文本、视频、语音的即时通讯.zip

    在基于WebSocket实现浏览器端文本、视频、语音的即时通讯中,我们可以深入理解以下几个关键知识点: 1. **WebSocket基本原理**:WebSocket协议是HTTP/1.1协议的一个扩展,它通过一次握手建立长连接,解决了HTTP协议...

    websocket方法实现收发语音的服务器端python代码及注释

    websocket方法实现收发语音的服务器端python代码及注释

    django+websocket实时通讯

    【标题】:“django+websocket实时通讯” 在现代Web开发中,实时通信已经成为不可或缺的一部分,...通过学习和实践这个主题,开发者可以掌握在Django应用中集成WebSocket的能力,从而构建出更加互动和实时的Web应用。

    webChat使用websocket实现网页多人聊天

    总结,"webChat"项目是一个基于WebSocket实现的网页多人聊天应用,通过WebSocket的全双工特性,实现了高效、实时的聊天功能。了解并掌握WebSocket的基本原理和API,以及如何在客户端和服务器端进行相应的编程,是...

    websocket server 和 client

    同时,"客户端采用android来实现"意味着应用程序的用户界面和逻辑是为Android设备设计的,可能使用了Android SDK中的WebSocket客户端API,如`org.java_websocket.client.WebSocketClient`,来与服务器进行通信。...

    使用Python的Django和layim实现即时通讯的方法

    Layim是一个基于WebSocket的即时通讯前端解决方案,它利用了HTML5中的WebSocket技术,允许服务器和浏览器之间实现全双工通信,大大提高了数据传输的效率和实时性。Layim界面友好,使用简单,并且可以轻松地嵌入到...

    Python-即时通讯Python实现web版多人聊天室

    【Python-即时通讯Python实现web版多人聊天室】 在当今数字化时代,即时通讯(Instant Messaging,简称IM)已经成为人们日常沟通的重要工具。本教程将深入探讨如何使用Python语言来实现一个基于Web的多人聊天室。...

    Web项目前后端实时通信的WebSocket Demo

    WebSocket是Web应用中实现双向通信的关键技术,它允许服务器与客户端之间建立持久的连接,从而...在"Web项目前后端实时通信的WebSocket Demo"中,我们可以学习到如何在实际项目中运用WebSocket实现高效的前后端通信。

    WebSocket通讯范例

    2. **服务器端代码**:服务器端通常使用Node.js的ws库或者其他服务器端语言(如Python的Flask-SocketIO、Java的Jetty等)实现WebSocket服务。服务器需要处理`upgrade`请求,创建WebSocket连接,并通过`onmessage`...

    基于websocket 的网页公共聊天时的实现

    WebSocket技术是一种在客户端和服务器之间建立长久连接的协议,它为实时、双向通信提供了高效解决方案。在"基于WebSocket的网页公共聊天实现"中,我们主要关注的是如何利用WebSocket构建一个实时的在线聊天系统,...

    使用websocket连接rabbitmqtt搭建IM聊天

    WebSocket 和 RabbitMQ 是两种在现代网络应用中广泛使用的通信技术。WebSocket 提供了全双工、低延迟的双向通信机制,常用于实时性要求较高的应用,如在线聊天、游戏等。RabbitMQ 是一个开源的消息队列系统,基于 ...

    onlineChatting-by-websocket-basedon-python:使用基于python的websocket协议进行在线聊天的应用程序

    本项目"onlineChatting-by-websocket-basedon-python"利用Python和WebSocket协议构建了一个在线聊天应用程序,提供了一种高效、实时的通信方式。WebSocket是一种在客户端和服务器之间建立持久连接的协议,相对于传统...

    高分项目 基于Python+Django+Vue+websocket实时点对点通讯系统源码+部署文档+全部数据资料.zip

    高分项目 基于Python+Django+Vue+websocket实时点对点通讯系统源码+部署文档+全部数据资料.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试...

    WebSocket区分不同客户端两种方法(HttpSession和@PathParam)

    在现代Web应用开发中,WebSocket技术因其能够实现实时双向通信的特点而被广泛应用于各种场景,尤其是在即时通讯领域。然而,随着应用场景的复杂化,如何有效地识别并处理多个不同的客户端连接成为了一个重要的问题。...

    Python-YxdIocp是DelphiWindowsIOCP通讯模型封装

    9. **API接口与使用**:YxdIocp应该提供了一套易于理解和使用的API接口,使得Delphi开发者能够快速集成到自己的项目中,实现高效的网络服务。 10. **源代码分析**:通过查看yangyxd-YxdIOCP-4774213这个压缩包中的...

    Python库 | zato-websocket-client-1.2.tar.gz

    WebSocket是一种在客户端和服务器之间提供全双工通信的网络协议,使得双向实时通信成为可能,这在实时应用如在线游戏、股票交易、即时通讯等场景中非常有用。 **WebSocket协议概述** WebSocket协议是HTTP/1.1协议...

    unity websocket 聊天室案例

    服务端通常用Node.js、Java、Python等后端语言实现,这里以Node.js为例,可以使用ws库来创建WebSocket服务器。服务端的主要任务是接收和广播消息,保持用户状态,处理新连接和断开连接的事件。 客户端部分,我们...

    WebSocket服务端程序v160_websocekt即时通讯_

    WebSocket是一种在客户端和服务器之间建立持久连接的协议,它允许双方进行全双工通信,即数据可以在两个方向上同时传输,极大地提高了实时性。在Web应用中,WebSocket为实现即时通讯(IM)提供了强大的支持,比如...

Global site tag (gtag.js) - Google Analytics