php websocket 帧封装,swoole websocket封装类和调用
上代码 ws.php
/**
* ws 优化 基础类库
* User: singwa
* Date: 18/3/2
* Time: 上午12:34
*/
class Ws {
CONST HOST = "0.0.0.0";
CONST PORT = 9512;
public $ws = null;
public function __construct() {
$this->ws = new swoole_websocket_server("0.0.0.0", 9512);
$this->ws->set(
[
'worker_num' => 2,
'task_worker_num' => 2,
]
);
$this->ws->on("open", [$this, 'onOpen']);
$this->ws->on("message", [$this, 'onMessage']);
$this->ws->on("task", [$this, 'onTask']);
$this->ws->on("finish", [$this, 'onFinish']);
$this->ws->on("close", [$this, 'onClose']);
$this->ws->start();
}
/**
* 监听ws连接事件
* @param $ws
* @param $request
*/
public function onOpen($ws, $request) {
var_dump($request->fd);
if($request->fd == 1) {
// 每2秒执行
swoole_timer_tick(2000, function($timer_id){
echo "2s: timerId:{$timer_id}\n";
});
}
}
/**
* 监听ws消息事件
* @param $ws
* @param $frame
*/
public function onMessage($ws, $frame) {
echo "ser-push-message:{$frame->data}\n";
// todo 10s
$data = [
'task' => 1,
'fd' => $frame->fd,
];
//$ws->task($data);
swoole_timer_after(5000, function() use($ws, $frame) {
echo "5s-after\n";
$ws->push($frame->fd, "server-time-after:");
});
$ws->push($frame->fd, "server-push:".date("Y-m-d H:i:s"));
}
/**
* @param $serv
* @param $taskId
* @param $workerId
* @param $data
*/
public function onTask($serv, $taskId, $workerId, $data) {
print_r($data);
// 耗时场景 10s
sleep(10);
return "on task finish"; // 告诉worker
}
/**
* @param $serv
* @param $taskId
* @param $data
*/
public function onFinish($serv, $taskId, $data) {
echo "taskId:{$taskId}\n";
echo "finish-data-sucess:{$data}\n";
}
/**
* close
* @param $ws
* @param $fd
*/
public function onClose($ws, $fd) {
echo "clientid:{$fd}\n";
}
}
$obj = new Ws();
前端代码 ws_client.html
dahai-swoole-ws测试
var wsUrl = "ws://192.168.244.132:9512";
var websocket = new WebSocket(wsUrl);
//实例对象的onopen属性
websocket.onopen = function(evt) {
websocket.send("hello-sinwa");
console.log("conected-swoole-success");
}
// 实例化 onmessage
websocket.onmessage = function(evt) {
console.log("ws-server-return-data:" + evt.data);
}
//onclose
websocket.onclose = function(evt) {
console.log("close");
}
//onerror
websocket.onerror = function(evt, e) {
console.log("error:" + evt.data);
}
结果
php websocket 帧封装,swoole websocket封装类和调用相关推荐
- php swoole实例,Swoole WebSocket实例
Swoole WebSocket实例 Swoole WebSocket介绍 swoole-1.7.9 增加了内置的websocket服务器支持,通过几行PHP代码就可以写出一个异步非阻塞多进程的Web ...
- Swoole WebSocket服务使用Task任务详解 (面向对象方法)
Swoole WebSocket服务使用Task任务详解 (面向对象方法) 作者: 绝爱七八丶 博客: https://blog.csdn.net/qq_40193451 日期: 2018.8.24 ...
- php websocket udp,swoole创建websocket服务并且支持https服务,同时监听tcp,udp端口
namespace serve\websocket; // use serve\websocket\task\Message as taskMessage; use serve\websocket\c ...
- 微信小程序之swoole/WebSocket创建聊天室(php)
一.php安装扩展组件Swoole 参考连接 二.配置linux服务器 在站点的配置文件中#SSL-END下面添加代码 location /wss/ {#通过配置端口指向部署websocker的项目 ...
- PHP 接收 UDP包_php只能做网站?基于swoole+websocket开发双向通信应用
前言 众所周知,PHP用于开发基于HTTP协议的网站应用非常便捷.而HTTP协议是一种单向的通信协议,只能接收客户端的请求,然后响应请求,不能主动向客户端推送信息.因此,一些实时性要求比较高的应用,如 ...
- thinkphp6+swoole websocket使用教程自研路线不建议使用
转载请注明: 藏羚骸的博客~thinkphp6+swoole websocket使用教程自研路线不建议使用. 介绍 对于think-swoole网上资料五花八门,根据网上资料,我成功走上了岔路口,但是 ...
- android websocket封装,Android WebSocket 方案选型OkHttp
目前Android WebSocket 框架 主要包括: SocketIO Java-WebSocket OkHttp WebSocket 一开始我首选的是采用SocketIO方案,因为考虑该方案封装 ...
- webSocket整理(二)--webSocket的模拟qq聊天案例
一 前言 前面一篇大致讲解了webSocket的定义以及配置,那么这一篇通过简单案例对webSocket更好的理解与使用.使用的是spring-servlet-webSocket的整合形式.因为这里主 ...
- SpringBoot2+Netty+WebSocket(netty实现websocket)
##### 一.SpringBoot2+Netty+WebSocket(netty实现websocket,支持URL参数) 原文链接: https://zhengkai.blog.csdn.net/a ...
最新文章
- 再造一个爱因斯坦?GPT-3 让我看到了名人“重生”的希望
- Nginx(一)------简介与安装
- linux文件分别打包命令,Linux文件打包命令
- [css] 使用css3实现一个斑马线的效果
- .NET 4.0新增命名空间:System.Collections.Concurrent
- 什么情况下需要创建MySQL索引
- 内存分析工具 MAT 的使用
- 电脑遇到DNS服务器未响应的情况该怎么办
- Android实战经验之图像处理及特效处理的集锦
- 北京国家开放大学计算机学院,李继先
- PHP重置static静态变量
- 前后端分离微服务管理系统项目实战SaaS-HRM项目(七)——POI报表入门
- 如何避免数据湖变成数据沼泽
- mad离群值_全部关于离群值
- js:contains函数
- 如何将PDF文件转换为PNG图片?
- 【Python】np.nonzero()函数
- C语言-------如何打印保留小数点后1,2,..位
- LM2596,LM2576,LM2575的差别
- 我所理解的 惠普云 (HP Cloud)