-安装workerman

首先通过 composer 安装
composer require topthink/think-worker -vvv

  

 如果报错:
Installation failed, reverting ./composer.json to its original cont

  

 则使用
composer require topthink/think-worker=1.0.* -vvv

  

 如果需要在window下做服务端,还需要
composer require workerman/workerman-for-win -vvv

  

-在thinkphp5根目录(即与application同级目录)创建server.php,编辑一下内容。 server.php 文件内容
define('APP_PATH', __DIR__ . '/application/');
define('BIND_MODULE','push/Worker');
// 加载框架引导文件
require __DIR__ . '/thinkphp/start.php';

  

-新建模块和控制器
创建workerman的controller,命名为Worker.php。在application/push/controller,目录不存在自行创建。添加以下内容:

  

-Worker.php。文件的内容
<?php

namespace app\push\controller;

use think\worker\Server;

class Worker extends Server
{
  protected $socket = 'websocket://127.0.0.1:2346';   /**
  * 收到信息
  * @param $connection
  * @param $data
  */
  public function onMessage($connection, $data)
  {
  $connection->send('我收到你的信息了');
  }   /**
  * 当连接建立时触发的回调函数
  * @param $connection
  */
  public function onConnect($connection)
  {   }   /**
  * 当连接断开时触发的回调函数
  * @param $connection
  */
  public function onClose($connection)
  {   }
  /**
  * 当客户端的连接上发生错误时触发
  * @param $connection
  * @param $code
  * @param $msg
  */
  public function onError($connection, $code, $msg)
  {
    echo "error $code $msg\n";
  }   /**
  * 每个进程启动
  * @param $worker
  */
  public function onWorkerStart($worker)
  {   }
}

  

-运行server.php
命令:php server.php

  

- 新建html文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Title</title>
</head>
<body>
<script>
  ws = new WebSocket("ws://127.0.0.1:2346");
  ws.onopen = function() {
    alert("连接成功");
  ws.send('tom');
    alert("给服务端发送一个字符串:tom");
  };
  ws.onmessage = function(e) {
    alert("收到服务端的消息:" + e.data);
  };
</script>
</body>
</html>

  

 原文:https://blog.csdn.net/qq_37322178/article/details/83715141 

thinkPHP5扩展workerman的更多相关文章

  1. thinkphp5+GatewayWorker+Workerman

    项目地址  ttps://www.workerman.net/workerman-chat thinkphp5+GatewayWorker+Workerman聊天室,可以多人聊天,指定某个人进行聊天, ...

  2. thinkphp5使用workerman定时器定时爬取某站点新闻资讯等内容

    1.首先通过 composer 安装workerman,在thinkphp5完全开发手册的扩展->coposer包->workerman有详细说明: #在项目根目录执行以下指令compos ...

  3. thinkphp5使用workerman的定时器定时任务在某一个时间执行

    1.首先通过 composer 安装workerman,在thinkphp5完全开发手册的扩展->coposer包->workerman有详细说明: #在项目根目录执行以下指令compos ...

  4. workerman与thinkphp结合

    运行workerman需要安装pcntl和event或者libevent pcntl安装方法: 以php-5.5.20为例,实际情况按自己安装的PHP目录 一. 找到PHP源码,进入 php-5.5. ...

  5. thinkphp5保存远程图片到本地

    代码 protected function saveImg($imgUrl){ $ext=strrchr($imgUrl,'.'); if(!in_array($ext,['.jpg','.png', ...

  6. Swoole和Workerman到底选谁?

    Swoole:面向生产环境的 PHP 异步网络通信引擎 使 PHP 开发人员可以编写高性能的异步并发 TCP.UDP.Unix Socket.HTTP,WebSocket 服务.Swoole 可以广泛 ...

  7. php 加入即时推送功能

    打开浏览器保持与服务器握手的websocket 之前用workerman接过很花时间,现在workerman对其代码做了优化->https://www.workerman.net/web-sen ...

  8. php-m 与 phpinfo 不一致的解决办法

    1.查看PHP当前加载的php.ini文件地址,在控制台输入以下命令: 1 php -i | grep php.ini 2.控制台返回的信息 1 2 Configuration File (php.i ...

  9. Thinkphp5.0支付宝支付扩展库类库大全

    Thinkphp5.0支付宝支付扩展库类库大全,包括手机网站支付.电脑网站支付.支付查询.退款.退款查询.对账单等. Thinkphp5.0支付宝调用方法: 电脑网站支付 Pagepay.php 调用 ...

随机推荐

  1. 第四届 CCCC 团体程序设计天梯赛 游记

    我们可能是唯一一个去参加这个比赛的中学生吧(划掉) DAY -inf 一天教练给我们说有这么个比赛,要选人,于是就愉快的开展了一次打字比赛 说实话手真的要抽筋了 不过最后还好涉险过关 DAY -1 疯 ...

  2. django上传图片简单验证以及自动修改图片名称

    django实现文件(图片)上传之后自动修改名称以及页面上传图片时的各种提醒: 1.先在你项目中添加一个文件夹如:system 在文件夹下添加__init__.py 和storage.py文件,并在s ...

  3. git最基础操作一

    1. 从远端克隆:git clone -b 克隆的分支 git的地址( eg:git clone -b master https://gitee.com/test/test.git ) 2.提交修改的 ...

  4. IP地址类型

    为了适应不同的网络,IP地址空间被分为5类,分别是A.B.C.D和E类,其中A,B,C类最常用,D类用于组播,E类用于科研 IP地址类型 第一字节十进制范围 二进制固定最高位 二进制网络位 二进制主机 ...

  5. jupyter nootbook本地使用指南

    本地文件读入jupyter notebook 在文件夹内,shift+鼠标右键,出现菜单中选择“”在此处打开命令窗口“”,输入jupyter notebook, 可以把本地文件读入jupyter.

  6. 【Unity游戏开发】你真的了解UGUI中的IPointerClickHandler吗?

    一.引子 马三在最近的开发工作中遇到了一个比较有意思的bug:“TableViewCell上面的某些自定义UI组件不能响应点击事件,并且它的父容器TableView也不能响应点击事件,但是TableV ...

  7. 3DMAX中坐标解析

    World:世界坐标系,又称世界空间.位于各视口左下角的图标,显示了世界坐标系的方向,其坐标原点位于视口中心.该坐标系永远不会变化. Screen:屏幕坐标系,此时将使用活动视口屏幕作为坐标系.在活动 ...

  8. Redis实战阅读笔记——第二章(redis重构web)

    在性能的要求下,如何用redis重构已有的已有的部分,其实整个例子背后的思路挺好的.在应用缓存的过程中,还有一指标个需要考虑,读写比.

  9. Hadoop yarn任务调度策略介绍(转)

    理想情况下,我们应用对Yarn资源的请求应该立刻得到满足,但现实情况资源往往是有限的,特别是在一个很繁忙的集群,一个应用资源的请求经常需要等待一段时间才能的到相应的资源.在Yarn中,负责给应用分配资 ...

  10. 同一台电脑同时装jdk1.8和jdk1.7

    因为之前安装的eclipse版本要求JDK1.8或以上的版本,但在搭建SSH框架的时候老是报错,又找不到2错误源.老师建议换个低版本的jdk.所以jdk版本需要降级. 但降级以后就不能打开eclips ...