workerman实现简单弹幕

  1. PHP页面
  2. <?php  
  3. use Workerman\Worker;  
  4. require_once '../Autoloader.php';//注意 这里要看你的workerman里的这个文件在哪 然后在进行修改  
  5.   
  6. $global_uid = 0;  
  7.   
  8. // 当客户端连上来时分配uid,并保存连接,并通知所有客户端  
  9. function handle_connection($connection) {  
  10.     global $text_worker$global_uid;  
  11.     // 为这个链接分配一个uid  
  12.     $connection->uid = ++$global_uid;  
  13.     foreach ($text_worker->connections as $conn) {  
  14.         $conn->send("user[{$connection->uid}] online");  
  15.     }  
  16. }  
  17.   
  18. // 当客户端发送消息过来时,转发给所有人  
  19. function handle_message($connection$data) {  
  20.     global $text_worker;  
  21.     foreach ($text_worker->connections as $conn) {  
  22.         $conn->send("user[{$connection->uid}] said: $data");  
  23.     }  
  24. }  
  25.   
  26. // 当客户端断开时,广播给所有客户端  
  27. function handle_close($connection) {  
  28.     global $text_worker;  
  29.     foreach ($text_worker->connections as $conn) {  
  30.         $conn->send("user[{$connection->uid}] logout");  
  31.     }  
  32. }  
  33.   
  34. $text_worker = new Worker("websocket://0.0.0.0:2347");  
  35.   
  36. $text_worker->count = 1;  
  37.   
  38. $text_worker->onConnect = 'handle_connection';  
  39. $text_worker->onMessage = 'handle_message';  
  40. $text_worker->onClose = 'handle_close';  
  41.   
  42. Worker::runAll(); 

html页面

<!DOCTYPE html>  

  1. <html lang="en">  
    <head>  
        <meta charset="UTF-8">  
        <title>Simple Chat</title>  
    </head>  
    <body>  
        <center> 
    <h1>Simple Chat</h1>  
    <input type="text" id="msg">  
    <button type="button" id="send">send</button> 


    <div id="content" style="width:200px;height:200px;border:1px solid red">
        假装在播放视频
        <marquee behavior="" direction=""></marquee>
    </div>  
    </center>
    </body>  
      
    <script type="text/javascript">  
        window.onload = function () {  
            var ws = new WebSocket("ws://127.0.0.1:2347");  
      
            document.getElementById("send").onclick = function () {  
                var msg = document.getElementById("msg").value;  
                ws.send(msg);  
            };  
      
            ws.onopen = function () {  
                console.log("连接成功");  
    //            ws.send('raid');  
            };  
            ws.onmessage = function (e) {  
                document.getElementById("content").innerHTML += '<marquee behavior="" direction="">' + e.data + '</marquee>';  
            };  
        };  
    </script>  
      
    </html> 
  2.  

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在 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` 回调函数中编写具体的定时任务逻辑。请根据自己的需求进行修改和扩展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值