由于最近工作需要,所以写了个Web IM前端核心,现在写的差不多了,拿出来分享一下。由于第一期时间比较紧张,所以使用XHR轮询方式请求服务器,设计思路是“单一时钟 + 函数步长”,请注意我展示的只是核心测试原型而已,但是主要的重要的部分都实现了,代码有点长我就不贴了,自己去测试地址看好了!测试地址:http://www.zhanghong.name/example/webim/测试说明:后边2个 <iframe /> 是输入框,可以按回车发送,或者 shift + 回车是换行(也可以设置为按 shift + 回车 是发送)。可以直接粘贴整个网页进来,脚本会自动提取网页中的纯文本。
感觉还是用socket比较爽一点。延迟低,发送数据量小。
作为古董socket表示鸭梨很大...
技术不在于花哨,在于实践。
你一个消息发送老大一个xml过来,占用这么多带宽,尤其是网速不好的情况下,你还能干啥...
<imdata> <setting>
<param name="key" value="value" />
</setting> <waiting> <note>
<param name="member" value="zhanghong" />
<param name="nickname" value="zhanghong" />
</note> <note>
<param name="member" value="panyunqi" />
<param name="nickname" value="panyunqi" />
</note> <note>
<param name="member" value="zengke" />
<param name="nickname" value="zengke" />
</note> <note>
<param name="member" value="wangzhaodong" />
<param name="nickname" value="wangzhaodong" />
</note> </waiting> <talking> <note>
<param name="member-me" value="zhanghong" />
<param name="member-he" value="zengke" />
<param name="container-message" value="imcontainer-message" />
<param name="container-sending" value="imcontainer-sending" />
</note> </talking> <message> <note>
<param name="member" value="kk" />
<param name="nickname" value="kk" />
<param name="elapse" value="1320653626345" />
<param name="type" value="file" />
<param name="content" value="http://fileurl" />
</note> <note>
<param name="member" value="zhanghong" />
<param name="nickname" value="zhanghong" />
<param name="elapse" value="1320653553090" />
<param name="type" value="talk" />
<param name="style" value="color:#FF9900; font-family:宋体; font-size:20px; font-weight:normal; font-style:normal; text-decoration:none;" />
<param name="content" value="今天午饭吃了吗?" />
</note> <note>
<param name="member" value="zhanghong" />
<param name="nickname" value="zhanghong" />
<param name="elapse" value="1320653575562" />
<param name="type" value="talk" />
<param name="style" value="color:#FF9900; font-family:宋体; font-size:20px; font-weight:normal; font-style:normal; text-decoration:none;" />
<param name="content" value="没吃?" />
</note> <note>
<param name="member" value="zhanghong" />
<param name="nickname" value="zhanghong" />
<param name="elapse" value="1320653607450" />
<param name="type" value="talk" />
<param name="style" value="color:#FF9900; font-family:宋体; font-size:20px; font-weight:normal; font-style:normal; text-decoration:none;" />
<param name="content" value="没吃回家吃去吧!" />
</note> </message></imdata>这样一个xml貌似也木有多大
这两种技术都有它的局限性,合适的才是最好.
另外页面上通过Flash来和server建立socket连接也是很不错的.
相反,楼主也许就会说XMPP只不过是个应用而已。不同的人在不同的环境做出最利于当前的决策是正常的,利于当前不一定就是利于全局。
了解一下http实现机制。
如果你一定觉得我说的毫无道理,很无聊,我表示赞同。
草,你到是应该看看我的楼顶怎么说的,看都没看清楚就进来扯淡,socket就是古董怎么地?不爽出去
楼主莫生气,讨论技术有争论这很正常的啊.
也许你是做前端的缘故,所以对后台server不熟悉也是情有可原的.
用js可以写个娱乐游戏,当然用后端的window窗体也是可以写的.
你所说的刷爆,其实这就是后台消息处理server要考虑的事情了,但其前端页面的js,as质量也要好,不然就算后台消息处理服务器在强大也不行.
我觉得你所说的前端可能就是特指用javascript,其实还有其他很多的技术的,比如flash和flex,以及silverlight同样是可以实现这种功能的.
楼主你v5了!
用你管我么?这里是js专区,c++进来扯什么蛋,滚