使用workerman实现在线聊天的方法

workerman 是一个php编写的通讯服务。之前的项目都是用它做数据接口服务

这次用它做一个简单的在线聊天室~

1.下载最新版本的workerman

可以去http://www.workerman.net 去下载

我这里将service 和 client 分开了两个文件夹,方便管理

 

客户端:

客户端就简单了。一个简单的html代码。嵌入了一个 websocket 监听服务

var ws, name, client_list={};

function connect() {

       // 创建websocket

       ws = new WebSocket("ws://192.168.0.88:2345");

       // 当socket连接打开时,输入用户名

       ws.onopen = onopen;

       // 当有消息时根据消息类型显示不同信息

       ws.onmessage = onmessage;

       ws.onclose = function() {

          console.log("连接关闭,定时重连");

          connect();

       };

       ws.onerror = function() {

          console.log("出现错误");

       };

    }

实现websocket的 打开,message的监听,以及close

1、当打开一个客户端,则立马弹出一个输入姓名的对话框

function onopen(){

        //console.log(name);

        //var username=connect_id="";

        if(!name)

        {

            name=prompt("请输入您的名字","");

            if(!name || name=='null'){ 

                name = '咕哒子';

            }

        }

  

        $('#curuser').text(name);

  

         data='{"type":"1","user":"'+name+'"}';

          

        ws.send(data);

    }

并将数据推送给服务端。type =1 代表登陆。

2、当收到消息时,判断消息类型,是群发消息 还是私聊消息。进而处理。

另外,每次用户有新用户登陆上来,都会 给各个客户端推送,用户列表。进行渲染

function onmessage(e){

        //console.log(e.data);

        var data = eval("("+e.data+")");

        var info=$('#chatinfo').html();

        if(data.type==1)

            $('#chatinfo').html(info+'<br/>'+data.data);

        else if(data.type==2)

        {

            // 在线用户列表 userinfo

            $('#userinfo').html(data.data);

        }

        else if(data.type==3)

        {

            // 在线用户列表 个人信息

            name=data.data.userinfo;

            //console.log(data.data);

        }

    }

然后另外就是 每个用户发送消息的代码了。可以是私聊 ,也可以是群发

$('#send').click(function(e){

        var msg=$('#msg').val();

        var tofriend=$('#tofriend').val();

        var tofrien
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 ThinkPHP 6 中使用 Workerman 实现定时器可以通过添加自定义命令来实现。下面是一个简单的实现步骤: 1. 首先,确保你已经安装了 Workerman 和 think-worker 扩展。可以通过执行以下命令来安装它们: ``` composer require workerman/workerman think-worker ``` 2. 创建一个自定义的命令类来处理定时任务。在 app/command 目录下创建一个名为 Timer.php 的文件,并在该文件中编写以下代码: ```php <?php namespace app\command; use think\console\Command; use think\console\Input; use think\console\Output; class Timer extends Command { protected function configure() { $this->setName('timer:work')->setDescription('Workerman Timer'); } protected function execute(Input $input, Output $output) { $worker = new \Workerman\Worker(); $worker->onWorkerStart = function($worker) { // 在这里编写定时任务的处理逻辑 \Workerman\Lib\Timer::add(1, function() { echo "定时任务执行\n"; }); }; \Workerman\Worker::runAll(); } } ``` 3. 注册自定义命令。在 config/console.php 中的 commands 数组中添加命令类的命名空间路径: ```php 'commands' => [ 'app\command\Timer', ], ``` 4. 运行定时任务。通过执行以下命令来运行定时任务: ``` php think timer:work ``` 这样,定时任务就会在后台运行,并每秒钟执行一次。你可以在 `$worker->onWorkerStart` 回调函数中编写具体的定时任务逻辑。请根据自己的需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值