一、workerman安装,测试环境为linux

1、在网站根目录,用命令行安装,要是出现root权限提示,输入y回车就行,或者新建一个用户再进入安装

Linux系统可以使用以下脚本测试本机PHP环境是否满足WorkerMan运行要求。
curl -Ss https://www.workerman.net/check | php

上面脚本如果全部显示ok,则代表满足WorkerMan要求

安装命令:

设置镜像
由于国内访问composer比较慢,建议设置阿里云composer镜像,运行如下命令设置阿里云代理

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

安装workerman
在根目录中运行
composer require workerman/workerman

2、安装后的效果图如下,或者直接下载官方代码包复制进来

3、开启服务器2345端口,测试服务器为腾讯云,在腾讯云控制平台开启就行

4、在根目录建一个start.php的文件,内容如下所示:

<?php
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php'; $global_uid = 0;
// 当客户端连上来时分配uid,并保存连接,并通知所有客户端
function handle_connection($connection)
{
global $text_worker, $global_uid;
// 为这个连接分配一个uid
$connection->uid = ++$global_uid; } // 当客户端发送消息过来时,转发给所有人
function handle_message(TcpConnection $connection, $data)
{
global $text_worker;
foreach($text_worker->connections as $conn)
{ // $conn->send("user[{$connection->uid}]"."进来了");
$conn->send($data);
}
} // 当客户端断开时,广播给所有客户端
function handle_close($connection)
{
global $text_worker;
foreach($text_worker->connections as $conn)
{ $conn->send("user[{$connection->uid}] logout");
}
} // 创建一个Worker监听2347接口
$text_worker = new Worker("websocket://0.0.0.0:2345"); // 只启动1个进程,这样方便客户端之间传输数据
$text_worker->count = 1; $text_worker->onConnect = 'handle_connection';
$text_worker->onMessage = 'handle_message';
$text_worker->onClose = 'handle_close'; Worker::runAll();

5、在根目录用命令进行启动,我在宝塔上启动的,加了-d 可以关闭启动窗口后进程不死

启动命令:php start.php start -d

停止命令:php start.php stop

重启命令:php start.php restart

6、再建一个静态html页面进行测试,ws地址要换成你的ip或者网站都行,我的是ws://d.aaa.net:2345内容如下:

<!doctype html>
<html> <head>
<meta charset="utf-8">
<title>websocket测试</title>
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
</head> <body>
<input type="text" id="roomid" value="无名">房间号
<br/>
<input type="text" id="firstname" value="你好"><button onclick="testsend()">发送</button><button onclick="closeaa()">关闭</button>
<br>
<div id="content"></div>
<script type="text/javascript">
ws = new WebSocket("ws://d.aaa.net:2345");
ws.onopen = function() {
alert("连接成功");
};
ws.onmessage = function(e) {
//alert("收到服务端的消息:" + e.data);
var re = JSON.parse(e.data);
//document.getElementById('content').innerHTML +=re+"<br/>";
document.getElementById('content').innerHTML +=re.roomid+"说:"+re.content+"<br/>";
}; function testsend(){
var roomid = document.getElementById('roomid').value;
var word = document.getElementById('firstname').value;
var re={"roomid":roomid,"content":word}
//var re = roomid+'.'+word;
ws.send(JSON.stringify(re));
}
function closeaa(){
if(ws){
ws.close();
alert("已经关闭");
}
return false;
}
</script>
</body> </html>

 7、到这里就结束了,可以把这个html页面上传到服务器上发给别人进行测试一下,我这里效果如下

要是做点对点聊天,建议用GatewayWorker

workerman、websocket简单聊天功能从0到1实现的更多相关文章

  1. spring boot集成websocket实现聊天功能和监控功能

    本文参考了这位兄台的文章: https://blog.csdn.net/ffj0721/article/details/82630134 项目源码url: https://github.com/zhz ...

  2. 基于vs2015 SignalR开发的微信小程序使用websocket实现聊天功能

    一)前言 在微信小程上实现聊天功能,大致有三种方式:1)小程序云开发 2)购买第三方IM服务 3)使用自己的服务器自己开发. 这里重要讲使用自己的服务器自己开发,并且是基于vs的开发. 网上提供的解决 ...

  3. 在Spring Boot框架下使用WebSocket实现聊天功能

    上一篇博客我们介绍了在Spring Boot框架下使用WebSocket实现消息推送,消息推送是一对多,服务器发消息发送给所有的浏览器,这次我们来看看如何使用WebSocket实现消息的一对一发送,模 ...

  4. websocket 实现聊天功能

    <html> <head> <base href="<%=basePath%>"> <title>webscoket t ...

  5. Tornado WebSocket简单聊天

    Tornado实现了对socket的封装:tornado.web.RequestHandler 工程目录: 1.主程序 manage.py import tornado.web import torn ...

  6. socket 编程 TCP 实现简单聊天功能【转】

    转自:http://blog.csdn.net/liujia2100/article/details/9006479 版权声明:本文为博主原创文章,未经博主允许不得转载. 各个主要函数的功能: .so ...

  7. 基于java 的websocket的聊天功能,一开始初始化websocket,执行打开连接之后就直接关闭连接了。

    1 错误描述: java 后台没有报错,但是就是连接不上,一连上又自动关闭. 2 错误根源: 缺少jar包. 对比了报错的tomcat 的jar包和不报错的jar包 发现是tomcat下缺少上图绿色框 ...

  8. 采用tcp协议和UDP协议实现简单的聊天功能

    Date: 2019-06-19 Author: Sun 一. Python3输出带颜色字体 实现过程: ​ 终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关. ​ 转义 ...

  9. Spring 学习——基于Spring WebSocket 和STOMP实现简单的聊天功能

    本篇主要讲解如何使用Spring websocket 和STOMP搭建一个简单的聊天功能项目,里面使用到的技术,如websocket和STOMP等会简单介绍,不会太深,如果对相关介绍不是很了解的,请自 ...

  10. JAVA结合WebSocket实现简单客服聊天功能

    说明:该示例只简单的实现了客服聊天功能. 1.聊天记录没有保存到数据库中,一旦服务重启,消息记录将会没有,如果需要保存到数据库中,可以扩展 2.页面样式用的网上模板,样式可以自己进行修改 3.只能由用 ...

随机推荐

  1. CentOS7-jdk1.8下载安装

    一.下载网址 jdk全版本:https://www.oracle.com/java/technologies/downloads/archive/ 本次安装版本(jdk1.8.0_151):https ...

  2. Selenium协议

    Selenium驱动浏览器使用的协议是什么? JsonWireProtocol 是通过webdriver与remote sever进行通信的web service协议.通过http请求,完成和remo ...

  3. learning rate,exponential decay

    (96条消息) Python函数:学习率衰减 tf.train.exponential_decay()_萌萌哒huo的博客-CSDN博客_python 衰减函数 ln即学习率(learning rat ...

  4. Mac 环境下 编译 spring 源码

    环境:macos idea jdk1.8 首先,在 spring.io的 git 地址 上下载下来源码后,执行里面的 gradlew命令,一般只要网络没有问题,都是可以成功的 然后,看显示的 Welc ...

  5. java xml转为json的两种方法

    java xml转为json的两种方法 <?xml version="1.0" encoding="utf-8" ?><auibinsuran ...

  6. mac git远程仓库错误解决方法

    mac更新后不知道怎么回事,git时出现了 Permission denied (publickey). 经查询后得出原因 1.首先给git进行config的配置 git config --globa ...

  7. 为什么 Go 语言 struct 要使用 tags

    原文链接:为什么 Go 语言 struct 要使用 tags 在 Go 语言中,struct 是一种常见的数据类型,它可以用来表示复杂的数据结构.在 struct 中,我们可以定义多个字段,每个字段可 ...

  8. RPA现阶段的问题

    RPA(Robotic Process Automation)全称机器人流程自动化,作为"自动化为先"时代的翘楚和先驱,被广泛地用来代替人类自动执行任务,越来越多的领域.企业和人开 ...

  9. pytorch的dataset与dataloader解析

    整理一下pytorch获取的流程: 创建Dataset对象 创建DataLoader对象,装载有dataset对象 循环DataLoader对象,DataLoader.__iter__返回的是Data ...

  10. 基于 Agora SDK 实现 iOS 端的多人视频互动

    视频互动直播是当前比较热门的玩法,我们经常见到有PK 连麦.直播答题.一起 KTV.电商直播.互动大班课.视频相亲等. 本文将教你如何通过声网Agora 视频 SDK 在iOS端实现一个视频直播应用. ...