❶ 如何使用GoEasy实现php与Websocket实时通信
如何使用GoEasy实现PHP与Websocket实时通信
实现步骤如下:
1. 获取GoEasy appkey.
在goeasy官网上注册一个账号,并新建一个app. APP创建好后系统会为该app自动生成两个key, 一个既可以用来接收又可以用来推送 (supper key),另一个只可以用来接收(subscriber key).
2. 客户端订阅一个channel.
a. 在客户端引入goeasy.js, js地址:
需要注意的是,不能将goeasy.js下载到本地,因为goeasy会根据不同浏览器来提供不同的js. 官网上也有相应说明。
b. 订阅代码
var goEasy = new GoEasy({appkey: 'subscriber key'});//这里我用的是subscriber key,因为在我的客户端我不需要推送任何消息,所以没有必要使用supper key
goEasy. subscribe({
channel: 'csdnNotification',
onMessage: function(message){
alert('Meessage received:'+message.content);//接收到推送的消息
}
});
复制代码
3. 前台推送及后台推送
3.1. 前台往相同channel上推送
在引入了goeasy.js的页面,直接调用goEasy. publish('csdnNotification', '您的好友222已上线'); 用法与订阅类似。
3.2. 后台往相同channel上推送. 用GoEasy提供的restful API实现
API url:
方式: Post
参数列表:
channel: 'csdnNotification' //与订阅的channel必须一致,否则客户端将收不到消息。因此我们也可以根据channel来控制哪些客户端可以接收。
appkey: 'supper key' //这里必须使用supper key
content: 'blabla…..' //要推送的内容
❷ php websocket连接报错怎么解决
php websocket连接报错一般是握手连接失败导致。
php 用websocket,从连接、建立、绑定、监听等,这些都需要手动去操作。配置错误会导致无法连接。
下面是client和server端建立websocket连接示意图:
解析:
1、PHP 中处理 WEBSOCKET
WebSocket 连接是由客户端主动发起的,所以一切要从客户端出发。第一步是要解析拿到客户端发过来的 Sec-WebSocket-Key 字符串。
GET /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Origin: .com
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13
2、提取 SEC-WEBSOCKET-KEY 信息
function getKey($req) {
$key = null;
if (preg_match("/Sec-WebSocket-Key: (.*)/r/n/", $req, $match)) {
$key = $match[1];
}
return $key;
}
3、加密 SEC-WEBSOCKET-KEY
function encry($req){
$key = $this->getKey($req);
$mask = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";
return base64_encode(sha1($key . '258EAFA5-E914-47DA-95CA-C5AB0DC85B11', true));
}
以上任何一个环节出错都会导致失败。
❸ Thinkphp6+workman实现服务端主动消息推送
在进行服务端主动消息推送时,选用Thinkphp6版本v6.1.4与php版本7.3.4,以及workman版本4.1.15进行操作,以下将详细阐述具体步骤。
首先,确保在项目根目录执行 php think 命令后,系统提示配置成功,这表明环境配置已经完成。
接着,在app/command/Webchat.php文件中编写相关逻辑,这是核心代码,用于实现消息推送的业务逻辑。
执行 php think webchat 命令后,系统会启动websocket服务,此时页面会显示服务运行成功的提示信息。
客户端测试阶段,初次请求即可接收到后端返回的数据,实际应用中,当后端在特定节点需要主动推送数据时,只需在合适时机进行推送操作即可。
按照步骤操作,通过执行命令得到Webchat.php的返回结果,同时Webchat.php将主动推送消息至客户端,验证消息推送功能。
至此,初步调试已完成,整个消息推送功能实现流程清晰,操作简便,适用于实时通讯场景。
思考环节,服务端主动消息推送技术,为实时应用提供了强大的支持,如何优化推送策略,提高推送效率和稳定性,将是进一步研究与实践的重点。