PHP原生Socket.io实现TIM即时通讯的坑
2年前
阅读 6473
评论 0
喜欢 0
## 1、长连接
原生PHP-Socket.io的长连接主要是使用`while(true)`+`服务器端堵塞`的方式实现的,这种长连接实现方式及其耗费性能,所以折中选择了一个优化的方案,鉴于博客没多少流量,我们在`whlie(true)`中使用了`sleep(1)`的方法,让循环1秒执行一次,这样降低了长连接的执行效率,释放了一部分内存,不过`WebSocket`会出现偶尔丢包的概率。
## 2、server服务端解包与打包代码
```php
/**
* 解码客户端发送过来的信息
* @param binary $buffer 客户端传来的信息
* @return String $decoded 解码后的字符串
*/
private function decodeMsg($buffer) {
$len = $masks = $data = $decoded = null;
$len = ord($buffer[1]) & 127;
if ($len === 126) {<