`
spartan1
  • 浏览: 360342 次
  • 性别: 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,一款web MSN 代码

    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 2008-2010

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

    webim(web即时通)学习文档

    webim(web即时通)学习文档webim(web即时通)学习文档webim(web即时通)学习文档webim(web即时通)学习文档,有20多个pdf和word文档

    在线聊天WEBIM.rar

    在线聊天WEBIM.rar

    webim实现含src

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

    实现webim得用ajax

    实现webim,使用ajax.需要大于20个字符,不支持HTML标签。

    webim-for-flask-master

    webim-for-flask-master

    免费下载WEBIM java pushlet .net php

    免费下载 WEBIM java pushlet .net php 大家下载,测试下,能够运行,免费下载

    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网站开发用途

    对网站开发者有帮助Sample.Client.rar

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

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

    webim-for-thinkphp

    webim在线客服工具代码,使用商城建站及企业建设站在线客服使用

    webim,即时通信软件,php

    webim,即时通信软件,php的web网页通信工具,可以随意整合到你的系统,使用php+mysql开发的

    在线客服服务支持系统webim163

    在线客服务支持系统webim163 在线客服务支持系统webim163

    基于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的可以参考

    WebIM-for-PHPWind插件5.8版本.zip

    1. 解压安装包到PhpWind根目录 2. 访问http://PhpWind访问URL/webim/ 3. 配置域名,ApiKey 完成安装 4. 给予上传文件目录可写权限 `chmod -R 777 static/images/files/   运行环境 PHP版本5.1 ,PHPWind 7.x,...

    webim.js 即时通讯

    webim.js文件 ,旧版本 ,csdn博客上记录使用过程地址:(https://blog.csdn.net/p930318/article/details/103465146)。这是sdk文件 web 版本即时通讯。腾讯IM,支持图片,文字即时沟通。

Global site tag (gtag.js) - Google Analytics