PHP构建即时通讯系统
什么是即时通讯?
实时的数据传输与交互
前提准备知识
1.TCP
传输层通信协议
面向连接的、可靠的、基于字节流的
建立链接需要三次握手
2.Socket(套接字)
一个工具,一个接口
封装了TCP/IP协议
建立长连接的基础
3.HTTP协议
一个应用层协议
Header+Body组成
比TCP更高级
短连接
流程:
客户机通过TCP/IP协议建立到服务器的TCP连接
客户端向服务器发送HTTP协议请求
服务器向客户机发送HTTP协议应答包
断开连接。客户端渲染HTML文档
4.WebSocket
一个应用层协议
长连接
主流即是通讯协议
开始开发
今天我们开发的是使用MeepoPs,一个多进程, 高性能, 高可用, 高并发, 分布式的轻量级Socket服务。声明:严重依赖PHP的PCNTL库,不支持任何非Linux/unix系统。
本次开发我是在Centos下开发的。
官方网址:
http://meepops.lanecn.com/
安装前的准备
1.安装pcntl扩展(可参照我的另一个文章:PHP可扩展(extension))
2.安装POSIX扩展(支持正则表达式)原则上也可以参照PHP扩展文章,但是有个简单的方式可以直接安装
yum list php-process
yum install php-process.i686 -y
3.stream_socket_server()的开启
函数作用:Create an Internet or Unix domain server socket
找到php.ini文件,搜索
disable_functions=
把stream_socket_server删掉,然后保存重启服务器即可
开发第一步
下载meepops
git clone https://github.com/lixuancn/MeepoPS.git
meepoPs测试
meepoPS已经帮我们写好了一个demo,我们直接使用就可以了
启动meepops
sudo php demo-telnet.php start -d
这个时候我们就可以用Telnet连接端口了
telnet 127.0.0.1 8080
如果提示找不到Telnet命令,说明Linux系统上没有装Telnet服务,这个时候输入以下命令安装
yum list telnet
yum install telnet.i686 -y
之后我们就可以测试了,更过内容请通过官网的说明文档获得