让我们迈向Web 3.0——在浏览器中整合Web IM
2010-04-12林云开
林云开
福建网龙天铭科技有限公司,福建 福州 350001
0 引言
一个小型的站点是很难为自己的网站搭建一个IM的服务环境,不仅服务器的开销巨大,维护的成本也不低。本文将要阐述的就是使用PHP动态网页脚本语言中的函数利用Google Gtalk进行socket通信来实现自己站点的一个Web IM。
Gtalk第一个版本发布于2005年8月24日,此款通信工具基于xmpp即时通讯协议。
这里简单介绍一下4种主流的即时通讯协议:第一种是即时信息和空间协议(IMPP);第二种是空间和即时信息协议(PRIM);第三种是针对即时通讯和空间平衡扩充的进程开始协议SIP(SIMPLE);第四种是XMPP,全称是可扩展消息处理现场协议。XMPP由Jabber软件基金会开发,是一种基于XML的协议,它继承了在XML环境中的灵活性,前身是Jabber。微软和IBM的即时通讯软件是基于SIP(SIMPLE);Google,AOL和Yahoo的产品基于XMPP。Gtalk允许任何第三方在遵循XMPP协议的前提下都可以随时与Gtalk实现免费连接。
在此使用的Apache2.2.9和PHP5.2.6进行搭配,操作系统环境是微软的Windows7。测试环境搭建完之后我们就开始此次课题的代码部分。
1 主要使用函数
本文使用PHP的socket函数来与Gtalk的服务器进行通信
stream_socket_client();
stream_socket_enable_crypto();
stream_set_blocking();
2 编码
在开始编码之前先解释一下向另外一个帐号发送即时消息的流程。首先向服务器发送一个开始服务的请求,服务器响应之后依次starttls(一种通信协议扩张),之后ssl加密通信,接着发送用户验证信息,服务器验证通过之后回复一个绑定的临时jid,最后客户端再将jid连同需要发送的信息及目标用户名发送给服务器,到此本次要实现的通信过程就结束,发送”“来结束此次会话。
编写一个主函数connect()来处理整个通信过程,代码如下:
代码主要是用来解释思路及策略,在实际应用中需要加入各种验证及错误反馈机制。运行环境中PHP的SSL扩展需要打开。
除了发送消息之外我们还可以将更为复杂的功能集成在我们的站点上,来使用户的忠诚度更高,这些复杂的功能它们的内在运行过程和上面描述的是一致的。
[1]MichaelJ.Donahoo,KennethL.CalvertTCP/IP Sockets编程[M].北京:清华大学出版社,2009:59-149.
[2]程伟,孙红丽.PHP网络编程技术与实践[M].北京:清华大学出版社,2008:1-25,293-311.
[3]http://xmpp.org/software/libraries.shtmlxmpp通信协议地址.