一个月前打算写一个web版本的IM,杂事缠身,出差/部门PK,断断续续用零碎时间开发,到今天为止,才分别用node.js和php完成了两个版本。代码都在github上(nodejs版,php版),对于这种需要实时获取状态变更的web应用,用nodejs特别合适。第一个版本使用nodejs实现后,奈何市面上便宜的虚拟空间都是LAMP的,只得写一个php版本的。LAMP不适合支持long polling,因此使用正常polling实现。
Web版本的好处就是不用下载部署客户端,直接在PC、手机上都可以使用。PC上Chrome浏览器版本快照:
android手机快照:
还比较简单,不支持多个朋友,但基本的消息转发,在线通知,消息发送、清空、刷新功能有了。
后续打算把点对点的语音通话功能添加上去。今天研究了一下STUN(RFC3489、RFC5389),点对点通信的关键是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
分享到:
相关推荐
webim,一款web MSN 代码
2.只有登录成功后,WebIM 才会启动心跳包(每隔一段时间ajax请求数据); 3.启动心跳包后,只有收/发聊天消息时,才会占用流量,其他时间占用流量很少(约 20 B,几乎可以忽略)。 2011-01-10 by 无梦(caihaihua@...
1. 解压安装包获得utf8, gbk两个版本,上传相应版本到记事狗plugin/目录解压 2. 登录JishiGou管理后台安装新插件webim 3. 启用插件 4. 设置插件参数,主要是注册域名和apikey 运行环境 PHP版本5.1+, 记事狗微博版本...
如果小应用在app下,则地址格式如app/app下小应用文件夹名或app/app下小应用文件夹名/index.asp 如果小应用是网上的程序,则地址格式为网上的程序的完整URL 2、怎么开发跟鱼鱼号码相关的小应用? 鱼鱼WEBIM接口是...
webim(web即时通)学习文档webim(web即时通)学习文档webim(web即时通)学习文档webim(web即时通)学习文档,有20多个pdf和word文档
在线聊天WEBIM.rar
WebIM Client简单实现 本文描述了使用javascript直接连接xmpp server的方法和详细配置,使用XEP-0124和xmpp server无缝接合。从而实现webim的实时性和高效性。
实现webim,使用ajax.需要大于20个字符,不支持HTML标签。
webim-for-flask-master
免费下载 WEBIM java pushlet .net php 大家下载,测试下,能够运行,免费下载
1.WebIM目录对应http://blog.csdn.net/zwdsmileface/article/details/45111111和http://blog.csdn.net/ibm_hoojo/article/details/7850540 2个帖子集合可以,但是后一篇帖子的jsjac.js版本没找到,希望网友们提供 2....
对网站开发者有帮助Sample.Client.rar
WebIM-for-近乎SNS是为近乎SNS微博社区...NexTalk支持社区用户聊天、群聊、图片文件传送、离线消息等社区用户、管理员、访客一对一即时聊天社区站点的群组集成,支持用户群组聊天社区的网站访客与管理员聊天,以帮助
webim在线客服工具代码,使用商城建站及企业建设站在线客服使用
webim,即时通信软件,php的web网页通信工具,可以随意整合到你的系统,使用php+mysql开发的
在线客服务支持系统webim163 在线客服务支持系统webim163
1.同一用户只能在一处登录; 2.好友分组列表; 3.聊天; 4.离线消息; 5.上线/下线通知; 6.日志; 7.信息编码(简单加密)(Base64 + UTF8); 8.断线重连; 9.在线状态高亮显示; 10.心跳包维持在线状态(弹性心跳...
基于XMPP协议的WEBIM 简单实现,如有开发openfire+spark/jwchat的可以参考
1. 解压安装包到PhpWind根目录 2. 访问http://PhpWind访问URL/webim/ 3. 配置域名,ApiKey 完成安装 4. 给予上传文件目录可写权限 `chmod -R 777 static/images/files/ 运行环境 PHP版本5.1 ,PHPWind 7.x,...
webim.js文件 ,旧版本 ,csdn博客上记录使用过程地址:(https://blog.csdn.net/p930318/article/details/103465146)。这是sdk文件 web 版本即时通讯。腾讯IM,支持图片,文字即时沟通。