实现私聊和群聊两个功能,要在web端实现想微信QQ那样的即时通讯的功能,我们需要了解一下websocket。
websocket是一种可以双向通讯的长连接协议,http是获取完数据就关闭,websocket则可以一直连接,就像铺了一条管道一样,水可以一直流着。
一、websocket前端
var ws = new WebSocket("ws://127.0.0.1.com:8282");
ws.onopen=function(){
var msg = JSON.stringify({
type: "login",
content: "login"
});
ws.send(msg);
}
ws.onmessage = function (e){
console.log(e);
//服务器发送的内容
var res = JSON.parse(e.data);
switch(res.type){
case "login":
break;
case "pm":
break;
case "groupPm":
break;
}
}
ws.onerror=function (e){
console.log(e);
}
ws.onclose=function (e){
console.log(e);
}
二、服务端
![a3f77f954d9261468d072ffa099a9dc4.png](https://img-blog.csdnimg.cn/img_convert/a3f77f954d9261468d072ffa099a9dc4.png)
客户端发送http请求,带上Sec-WebSocket-Key,
服务端握手 加密key,发送给客户端。
双方能进行交流。
发送接收消息需要进行打包encode 解包decode。
<?php
class SocketService
{
public $host="tcp://0.0.0.0:8000";
private $address;
private $port;
private $_sockets;
public $clients;
public $maxid=1000;
public function __construct($address = '', $port