上代码 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封装类和调用相关推荐

  1. php swoole实例,Swoole WebSocket实例

    Swoole WebSocket实例 Swoole WebSocket介绍 swoole-1.7.9 增加了内置的websocket服务器支持,通过几行PHP代码就可以写出一个异步非阻塞多进程的Web ...

  2. Swoole WebSocket服务使用Task任务详解 (面向对象方法)

    Swoole WebSocket服务使用Task任务详解 (面向对象方法) 作者: 绝爱七八丶 博客: https://blog.csdn.net/qq_40193451 日期: 2018.8.24 ...

  3. php websocket udp,swoole创建websocket服务并且支持https服务,同时监听tcp,udp端口

    namespace serve\websocket; // use serve\websocket\task\Message as taskMessage; use serve\websocket\c ...

  4. 微信小程序之swoole/WebSocket创建聊天室(php)

     一.php安装扩展组件Swoole 参考连接 二.配置linux服务器 在站点的配置文件中#SSL-END下面添加代码 location /wss/ {#通过配置端口指向部署websocker的项目 ...

  5. PHP 接收 UDP包_php只能做网站?基于swoole+websocket开发双向通信应用

    前言 众所周知,PHP用于开发基于HTTP协议的网站应用非常便捷.而HTTP协议是一种单向的通信协议,只能接收客户端的请求,然后响应请求,不能主动向客户端推送信息.因此,一些实时性要求比较高的应用,如 ...

  6. thinkphp6+swoole websocket使用教程自研路线不建议使用

    转载请注明: 藏羚骸的博客~thinkphp6+swoole websocket使用教程自研路线不建议使用. 介绍 对于think-swoole网上资料五花八门,根据网上资料,我成功走上了岔路口,但是 ...

  7. android websocket封装,Android WebSocket 方案选型OkHttp

    目前Android WebSocket 框架 主要包括: SocketIO Java-WebSocket OkHttp WebSocket 一开始我首选的是采用SocketIO方案,因为考虑该方案封装 ...

  8. webSocket整理(二)--webSocket的模拟qq聊天案例

    一 前言 前面一篇大致讲解了webSocket的定义以及配置,那么这一篇通过简单案例对webSocket更好的理解与使用.使用的是spring-servlet-webSocket的整合形式.因为这里主 ...

  9. SpringBoot2+Netty+WebSocket(netty实现websocket)

    ##### 一.SpringBoot2+Netty+WebSocket(netty实现websocket,支持URL参数) 原文链接: https://zhengkai.blog.csdn.net/a ...

最新文章

  1. 再造一个爱因斯坦?GPT-3 让我看到了名人“重生”的希望
  2. Nginx(一)------简介与安装
  3. linux文件分别打包命令,Linux文件打包命令
  4. [css] 使用css3实现一个斑马线的效果
  5. .NET 4.0新增命名空间:System.Collections.Concurrent
  6. 什么情况下需要创建MySQL索引
  7. 内存分析工具 MAT 的使用
  8. 电脑遇到DNS服务器未响应的情况该怎么办
  9. Android实战经验之图像处理及特效处理的集锦
  10. 北京国家开放大学计算机学院,李继先
  11. PHP重置static静态变量
  12. 前后端分离微服务管理系统项目实战SaaS-HRM项目(七)——POI报表入门
  13. 如何避免数据湖变成数据沼泽
  14. mad离群值_全部关于离群值
  15. js:contains函数
  16. 如何将PDF文件转换为PNG图片?
  17. 【Python】np.nonzero()函数
  18. C语言-------如何打印保留小数点后1,2,..位
  19. LM2596,LM2576,LM2575的差别
  20. 我所理解的 惠普云 (HP Cloud)

热门文章

  1. qt.pro转成vs程序
  2. asm字节码操作 方法的动态修改增加
  3. prototype.js1.5平面结果导读图
  4. 牛客21783 牛牛的星际旅行
  5. Java Socket实现客户端服务端之间的通信
  6. 图计算-Pregel-Hama
  7. Eclipse中tomcat的简单配置
  8. c语言课设报告时钟vc环境,C语言课程设计报告模拟时钟转动程序
  9. date js 半年_js Date 日期使用上的一个坑
  10. python写负数_python 负数