一、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. Rename a Local and Remote Git Branch

    Renaming Git Branch Follow the steps below to rename a Local and Remote Git Branch: 01 Start by swit ...

  2. 手写 Java HashMap 核心源码

    手写 Java HashMap 核心源码 手写 Java HashMap 核心源码 上一章手写 LinkedList 核心源码,本章我们来手写 Java HashMap 的核心源码. 我们来先了解一下 ...

  3. IDEA快键键设置为Eclipse快捷键

    一.基础修改,参考这个就可以了 https://jingyan.baidu.com/article/6dad5075a5f7b4e122e36e4b.html 二.其他需要手动配置的快捷键修改(主要是 ...

  4. VSCODE C# 运行 找不到任务"BUILD"----C#常用命令

    使用 Visual Studio Code 创建 .NET 类库 - .NET | Microsoft Docs 安装vscode.vscode c#相关拓展.MINIGW64 1.创建文件夹 2.用 ...

  5. c#获取文本中的内容

    string path = HttpContext.Current.Server.MapPath("/文件夹/名称.txt"); string ss = File.ReadAllT ...

  6. windows2012通过powershell安装远程组件技巧

    概要: 通过服务器管理器安装远程桌面服务会报错一直没有办法解决 之后了解到安装组件可以通过powershell命令安装   powershell命令说明 https://docs.microsoft. ...

  7. java的数据和表达式

    一.基本语法元素 1.空白和注释及语句 (1)空白: 换行符.回车符.空格键.水平定位键(Tab) 编译器会忽略掉多余的空白 作用:增加程序的易读性 (2)注释:主要作用是将代码解释其功能和作用,在编 ...

  8. 关于Android开发工具的下载之ADT篇

    ADT的下载 首先可以选择下面推荐的两个网站去下载相应的安装包,网址如下: http://tools.android-studio.org/index.php/adt-bundle-plugin 或者 ...

  9. Python--相关环境的安装,以及hello world的实现

    相关环境 进入官网:https://www.python.org/downloads/ 点击这里: 来到新的界面之后,向下滑动: 找到上图中的界面,选择版本进行下载即可. 具体的安装步骤可以参考这里看 ...

  10. Java 编程入门第一课:HelloWorld

    在之前的文章中,壹哥带大家搭建出了 Java 的开发环境,配置了 JDK 环境变量,并且我们也熟悉了 dos 命令行的操作.那么从这篇文章开始,壹哥就开始带各位真正地学习 Java 代码该怎么写. - ...