Workerman的一些应用方向如下

  1. 即时通讯类 例如网页即时聊天、即时消息推送、微信小程序、手机app消息推送、PC软件消息推送等等
  2. 物联网类 例如Workerman与打印机通讯、与单片机通讯、智能手环、智能家居、共享单车等等。
  3. 游戏服务器类
  4. SOA服务化 利用Workerman将现有业务不同功能单元封装起来,以服务的形式对外提供统一的接口,达到系统松耦合、易维护、高可用、易伸缩。[示例 workerman-json-rpc、 workerman-thrift]
  5. 其它服务器软件 例如 GatewayWorker,PHPSocket.IO,http代理,sock5代理,分布式通讯组件,分布式变量共享组件,消息队列、DNS服务器、WebServer、CDN服务器、FTP服务器等等
  6. 中间件 例如异步MySQL组件,异步redis组件,异步http组件,异步消息队列组件,异步dns组件,文件监控组件,还有很多第三方开发的组件框架等等 原理: worker是workweman中的基本容器,每个worker都可以开启多个进程监听端口并使用特定的协议通讯,类似nginx监听端口;每个Worker进程独立运作,采用Epoll(需要装event扩展)+非阻塞IO,每个Worker进程都能做上万的客户端连接,并处理这些连接上发来的数据。主进程为了保持稳定性,只负责监控子进程,不负责接收数据也不做任何业务逻辑。

现在我们就可以做一个聊天室,关键代码如下:

<?php
/*** Created by PhpStorm.* User: John* Date: 2019/4/3* Time: 13:19*/use Workerman\Worker;require __DIR__.'/../Workerman-framework/Autoloader.php';// 当客户端连上来时分配uid,并保存连接,并通知所有客户端
function handle_connection($connection)
{}// 当客户端发送消息过来时,转发给所有人
function handle_message($connection, $data)
{global $text_worker;foreach($text_worker->connections as $conn){$conn->send($data);}
}// 当客户端断开时,广播给所有客户端
function handle_close($connection)
{}// 创建一个文本协议的Worker监听2347接口
$text_worker = new Worker("websocket://0.0.0.0:2347");// 只启动1个进程,这样方便客户端之间传输数据
$text_worker->count = 1;$text_worker->onConnect = 'handle_connection';
$text_worker->onMessage = 'handle_message';
$text_worker->onClose = 'handle_close';Worker::runAll();
复制代码

前端代码如下

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<div style="margin: 0 auto;width: 800px"><h2>聊天室</h2><textarea type="text" style="border: 1px solid black;width: 800px;height: 200px;" id="his"></textarea><input type="text" style="width:740px" id="sendMsg">&nbsp;<button id="send">发送</button>
</div>
</body>
</html>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>$(function () {var ws = new WebSocket("ws://127.0.0.1:2347");var storage = window.localStorage;if(!storage.getItem('name')){var name=prompt("请输入您的名字","");storage.setItem('name',name);}$('#send').click(function () {msg = $('#sendMsg').val();$('#sendMsg').val('');ws.send(storage.getItem('name')+':'+msg);});ws.onopen = function() {$('#his').append("服务器连接成功.....");$('#his').append("\n");};ws.onmessage = function(e) {$('#his').append(e.data);$('#his').append("\n");};});
</script>
复制代码

咱们这里使用了websocket协议,打开页面即建立一个连接;

解释下php代码

onConnet就是连接时完成三次握手时,执行的触发动作;$connection是连接对象;

onMessage是当客户端通过连接发来数据时(Workerman收到数据时)触发的回调函数;data是对应协议decode(解码)了的数据;$connection是连接对象

onClose当客户端连接与Workerman断开时触发的回调函数。不管连接是如何断开的,只要断开就会触发onClose。每个连接只会触发一次onClose(注意:这里的断开指的是关闭浏览器,不是断网;断网的话需要做心跳检测来判断)

代码传送门(github.com/BoHongtao/W…)

示例demo(github.com/BoHongtao/W…)

转载于:https://juejin.im/post/5caae542e51d452b084af4b4

workerman实现聊天室相关推荐

  1. laravel整合workerman做聊天室

    测试工具  http://www.blue-zero.com/WebSocket/ 2018年8月6日17:28:24 <?phpnamespace App\Console\Commands;u ...

  2. tp5 + workerman 实现聊天室

    最近公司的项目需要做一个简单的聊天,项目用的框架是thinkphp 5,开发任务主要是实现买卖双方生成订单后,可以在线交流. 无意间在tp手册上看到 workerman socket包,然后就安装了试 ...

  3. workerman php直播,workerman PHP聊天室框架

    workerman-chat是一个以workerman作为服务器容器,使用PHP开发的基于Websocket协议的一个可分布式部署的聊天室框架. workerman-chat采用gateway wor ...

  4. 视频教程-Workerman入门到精通实战layIM聊天室-PHP

    Workerman入门到精通实战layIM聊天室 多年一线互联网开发实战以及培训经验,对php开发,linux运维架构有丰富的经验,善于分析问题,解决问题. lampol ¥149.00 立即订阅 扫 ...

  5. Workerman 小蝌蚪聊天室去掉端口

    Workerman是一款纯PHP开发的开源的PHP socket 服务器框架. 我们在配置聊天室的时候,按照框架作者的步骤,最后形成这样的URL  http://www.doname.com:8282 ...

  6. php制作聊天室,workerman+thinkphp制作简易聊天室

    下面由workerman教程栏目给大家介绍制作简易聊天室的方法,希望对需要的朋友有所帮助! 1:环境在window下面的,thinkphp3.2 2:下载GatewayWork,放到 目录下 3:然后 ...

  7. 用webstorm做一个跑马灯_用Workman做一个聊天室

    php中文网最新课程 每日17点准时技术干货分享 为什么要写这篇文章? 我学习Workman好几次了,每次都失败(没做成想要的功能,原谅我比较笨).但是这次也花了好几个小时,把之前没做成的功能实现了. ...

  8. workerman-chat(PHP开发的基于Websocket协议的聊天室框架)(thinkphp也是支持socket聊天的)...

    workerman-chat(PHP开发的基于Websocket协议的聊天室框架)(thinkphp也是支持socket聊天的) 一.总结 1.下面链接里面还有一个来聊的php聊天室源码可以学习 2. ...

  9. Linux网络编程之PHP聊天室Workerman-chat

    云服务器上搭建"PHP聊天室框架" 一.简介: 在服务器上搭建PHP聊天室框架{workerman-chat}具体步骤 1. 准备云服务器 购买阿里云服务器 [可选购买其他云服务器 ...

  10. websocket+php socket实现聊天室

    原文地址:http://www.cnblogs.com/nickbai/articles/6169745.html 这两天用了点时间,研究了一下,用php socket+ websocket实现了一个 ...

最新文章

  1. Linux编程_Shell脚本练习题
  2. servletConfig对象
  3. C++-Loki Allocator
  4. IOC和DI 控制反转和依赖注入
  5. Android开发之跨进程通讯-AIDL实现方法 (附源码)
  6. 微信小程序,转盘抽奖
  7. 自定义AlertDialog控件的使用(AndroidStudio)
  8. 解决Matlab画图直接保存.eps格式而导致图不全的问题
  9. 下载全球高清卫星影像地图
  10. zyf的简单数学题(找规律)
  11. 互联网企业的职位职位之间的相互关系
  12. 计算机考试系统注册组件失败,银行从业在线支付,IE浏览器安装控件不成功怎么办...
  13. 计算机无法启动无法修复工具,windows资源保护无法启动修复服务的解决方法
  14. 热烈欢迎Ubuntu志愿者!
  15. AI 入行那些事儿(13)人工智能的三类技术岗位
  16. 游戏建模 | UV贴图及模型展开案例
  17. JAVA程序设计:救生艇(LeetCode:881)
  18. 人民币即期汇率近六年首次跌破6.70 对国际消费影响几何
  19. Mac OS无法进入系统/数据备份/重装系统方法步骤
  20. Ubuntu 14.04安装Nvidia显卡驱动以及查看显卡驱动

热门文章

  1. linux mantis安装 yum,CentOS 安装和配置 Mantis
  2. 解决safari里面淘宝京东页面无法打开以及打开后乱码的问题!
  3. 海康sip服务器是什么意思_sip协议端口有什么作用?sip端口号详解
  4. GaRy-Liang的linux成长日记5-基本命令
  5. 苹果手机屏幕尺寸大全
  6. 计算机版音乐教学,计算机音乐技术在高职音乐教学的应用
  7. sql查询本月数据,当天数据
  8. 生成1000个不同的随机数
  9. 【网速监控工具——TrafficMonitor 】的下载安装使用教程
  10. 计算机网络基础之安全防范措施