`
spartan1
  • 浏览: 365876 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

WebIM第一版本及下一步工作

 
阅读更多

一个月前打算写一个web版本的IM,杂事缠身,出差/部门PK,断断续续用零碎时间开发,到今天为止,才分别用node.js和php完成了两个版本。代码都在github上(nodejs版php版),对于这种需要实时获取状态变更的web应用,用nodejs特别合适。第一个版本使用nodejs实现后,奈何市面上便宜的虚拟空间都是LAMP的,只得写一个php版本的。LAMP不适合支持long polling,因此使用正常polling实现。

 

Web版本的好处就是不用下载部署客户端,直接在PC、手机上都可以使用。PC上Chrome浏览器版本快照:


 

android手机快照:


 

还比较简单,不支持多个朋友,但基本的消息转发,在线通知,消息发送、清空、刷新功能有了。

 

后续打算把点对点的语音通话功能添加上去。今天研究了一下STUN(RFC3489RFC5389),点对点通信的关键是NAT穿透,一般比较可靠的穿透方法是UDP打洞(hole punching),而语音通话对实时性的要求大于不丢包的要求,也适合使用UDP协议。

 

这样就要求有一个public的UDP Server,目前的LAMP空间肯定不行了,需要申请一个虚拟服务器。另外,客户端需要使用UDP通信,要么不使用B/S架构,开发一个客户端应用,要么继续使用B/S,不过使用java或flash去创建UDP点对点连接。实际上,W3C的WebRTC规范就是为这一目的构建的,WebRTC定义了一系列接口,能够通过可靠信令平面(signalling plane),使用STUN等NAT穿透协议,方便的在两个browser之间构建点对点的媒体平面(media plane)连接。可惜的是这一规范还处于draft阶段,还不知何年何月才能落地。

 

考虑到广泛的部署支持,还是选择B/S架构。当前可行的方案就是考虑flash/java了。这种方式虽然被WebRTC工作组诟病,需要浏览器插件支持,但目前没有其他更好的办法了。

 

值得一提的是,Chrome浏览器已经支持WebRTC了,还有一个应用可以用来测试,可惜天朝访问不了。

 

java web start比较厚重,考虑flash

 

经过简单的搜索,除了java之外,好像flash、silverlight这些最流行的browser插件都不支持单播UDP(flash支持RTMFP实现browser间点对点通信,silverlight支持多播UDP),原因如这篇文章所述,容易引起安全问题。话说回来,互联网上的NAT一方面是提供更多IP,另一方面也是保护了脆弱的客户端,只要少数一些对外提供服务的服务器专心考虑安全问题就行了。而服务器的安全性已经有大量研究了,客户端如果对外能够直接暴露确实危险的很。

 

难道只能使用java了???不甘心,再看看。

 

看了一下flash的RTMFP资料,这个协议完全可以满足我的要求。下一步就是好好分析一下RTMFP是否在各个PC、Mobile设备的浏览器上都支持了。

 

有必要自己写一个RTMFP服务器,github上已经有两个了,一个c++的,一个nodejs的。

  • 大小: 117.2 KB
  • 大小: 60.7 KB
分享到:
评论
1 楼 maxer025 2015-01-22  
楼主,github 地址?

相关推荐

    webim

    开发者可以通过研究这些代码,理解WebIM的工作原理,并根据需求进行定制开发。 总的来说,WebIM是现代Web应用中不可或缺的一部分,它极大地丰富了Web应用的功能,提升了用户体验,特别是在协作、社交和客户服务等...

    WEBIM网站开发用途

    在现代互联网应用中,实时通信已经成为必不可少的一部分,尤其是在构建交互性强、用户体验良好的网站时。"WEBIM"(Web即时通讯)技术就是...无论是在团队协作还是用户交流场景下,WEBIM都是提升网站价值的重要工具。

    WebIM_Ajax框架

    2.只有登录成功后,WebIM 才会启动心跳包(每隔一段时间ajax请求数据); 3.启动心跳包后,只有收/发聊天消息时,才会占用流量,其他时间占用流量很少(约 20 B,几乎可以忽略)。 2011-01-10 by 无梦(caihaihua@...

    Webim for 记事狗插件

    1. 解压安装包获得utf8, gbk两个版本,上传相应版本到记事狗plugin/目录解压 2. 登录JishiGou管理后台安装新插件webim 3. 启用插件 4. 设置插件参数,主要是注册域名和apikey 运行环境 PHP版本5.1+, 记事狗微博版本...

    在线聊天WEBIM.rar

    在线聊天技术是现代互联网应用中的重要组成部分,尤其是在社交媒体、协同工作和客户服务等领域有着广泛的应用。WebIM,全称为Web即时通讯,是指通过Web浏览器实现的即时通讯功能,它允许用户无需安装额外软件即可...

    实现webim得用ajax

    实现WebIM的第一步是建立连接。通常,我们可以使用WebSocket协议,它提供全双工、低延迟的通信方式,适合实时通信。但是,考虑到浏览器兼容性问题,我们可以使用Ajax轮询(Polling)或长轮询(Long Polling)作为...

    WebQQ WebIM WebSocket

    1. **WebSocket协议**:WebSocket是一种在客户端和服务器之间建立持久连接的网络协议,允许双方进行全双工通信。相比HTTP,WebSocket更适合需要频繁交互的实时应用,如在线聊天、游戏、股票交易等。它通过握手协议...

    webim(web即时通)学习文档

    3. **推送服务**:为了实现实时消息推送,WebIM系统通常会有一个专门的推送服务,它可以是自建的,也可以使用第三方服务如Firebase Cloud Messaging (FCM)或Apple Push Notification service (APNs)。 4. **安全性*...

    webim-for-thinkphp

    本项目是WebIM的ThinkPHP集成版本,专为商城建站和企业网站建设提供在线客服解决方案。 【描述】"WebIM在线客服工具代码,使用商城建站及企业建设站在线客服使用" 这个项目包含了WebIM系统与ThinkPHP框架的整合...

    webim,即时通信软件,php

    1. **WebIM架构与原理** WebIM基于WebSocket协议,这是一种在浏览器和服务器之间建立长连接的协议,克服了HTTP协议的限制,实现了双向通信。WebSocket使得服务器能主动推送消息到客户端,从而实现实时通信。WebIM...

    鱼鱼WEBIM 2008-2010

    如果小应用在app下,则地址格式如app/app下小应用文件夹名或app/app下小应用文件夹名/index.asp 如果小应用是网上的程序,则地址格式为网上的程序的完整URL 2、怎么开发跟鱼鱼号码相关的小应用? 鱼鱼WEBIM接口是...

    openfire+smack开发webim笔记

    【标题】:“openfire+smack开发webim笔记”涉及的知识点详解 【一】XMPP(可扩展消息处理现场协议) XMPP是一种基于XML的即时通讯协议,它最初源于Jabber项目,用于实现服务器之间的即时消息传递和在线状态探测。...

    免费下载WEBIM java pushlet .net php

    1. **WebIM**:WebIM是一种基于Web的即时通讯系统,允许用户在浏览器内进行实时聊天,无需安装额外的客户端软件。它通常依赖于WebSocket等技术来实现双向、低延迟的数据传输。 2. **Java Pushlet**:Pushlet是Java...

    webim实现含src

    WebIM Client简单实现 本文描述了使用javascript直接连接xmpp server的方法和详细配置,使用XEP-0124和xmpp server无缝接合。从而实现webim的实时性和高效性。

    webim-for-flask-master

    【标题】"webim-for-flask-master"是一个基于Flask框架构建的实时通讯系统项目,主要专注于实现Web即时通讯(WebIM)功能。这个项目利用Python的Flask库,为Web应用提供了一个轻量级、高效的实时通信解决方案。 ...

    WebIM研究整理

    1.WebIM目录对应http://blog.csdn.net/zwdsmileface/article/details/45111111和http://blog.csdn.net/ibm_hoojo/article/details/7850540 2个帖子集合可以,但是后一篇帖子的jsjac.js版本没找到,希望网友们提供 2....

    WebIM-for-近乎SNS插件 v5.3

    WebIM-for-近乎SNS是为近乎SNS微博社区...NexTalk支持社区用户聊天、群聊、图片文件传送、离线消息等社区用户、管理员、访客一对一即时聊天社区站点的群组集成,支持用户群组聊天社区的网站访客与管理员聊天,以帮助

    基于AJAX的WebIM(ASP.NET + JQuery + AJAX)

    1.同一用户只能在一处登录; 2.好友分组列表; 3.聊天; 4.离线消息; 5.上线/下线通知; 6.日志; 7.信息编码(简单加密)(Base64 + UTF8); 8.断线重连; 9.在线状态高亮显示; 10.心跳包维持在线状态(弹性心跳...

    基于XMPP的webIm 实现

    基于XMPP协议的WEBIM 简单实现,如有开发openfire+spark/jwchat的可以参考

    在线客服服务支持系统webim163

    在线客服服务支持系统WebIM163是一款专为网站提供实时交流功能的解决方案,它能够帮助企业或组织构建高效、便捷的在线客户服务系统。通过这款系统,访客可以在网站上直接与客服人员进行实时对话,提高客户满意度并...

Global site tag (gtag.js) - Google Analytics