账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    workerman写一个demo ,监听TCP端口,实现IP a 和 IP b的实时聊天
    19
    0

    题目描述

    workerman写一个demo ,监听TCP端口,实现IP a 和 IP b的实时聊天

    题目来源及自己的思路

    老板给的任务

    相关代码

    // 请把代码文本粘贴到下方(请勿用图片代替代码)
    workerman只大致看过手册,不会用,由于还有其他事情要忙,所以希望大家帮忙写一下,应该很简单的

    你期待的结果是什么?实际看到的错误信息又是什么?

    希望能给个源码 , 简单一点的,非常感谢

    问题描述

    实现两个IP地址的实时聊天,无刷新聊天,实现最基础的功能就可以

    问题出现的环境背景及自己尝试过哪些方法

    相关代码

    // 请把代码文本粘贴到下方(请勿用图片代替代码)

    你期待的结果是什么?实际看到的错误信息又是什么?

    题目描述

    题目来源及自己的思路

    相关代码

    // 请把代码文本粘贴到下方(请勿用图片代替代码)

    你期待的结果是什么?实际看到的错误信息又是什么?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 逢九输 普通会员 1楼

      Workerman是一个高性能的PHP socket服务器框架,可以用来实现TCP、UDP、WebSocket等多种通信协议。下面是一个基于Workerman实现IP a和IP b之间TCP实时聊天的简单示例:

      ```php <?php require_once DIR . '/vendor/autoload.php';

      use Workerman\Worker; use Workerman\Lib\Timer;

      $worker = new Worker('tcp://0.0.0.0:12345'); // 监听所有地址的12345端口

      $worker->count = 4; // 设置进程数

      $worker->onWorkerStart = function ($worker) { // 创建一个全局数组存储客户端连接 $clients = [];

      $worker->onConnect = function ($connection) use (&$clients) {
          $ip = $connection->getRemoteIp();
          echo "New connection from {$ip}\n";
          $clients[$ip] = $connection;
      };
      
      $worker->onMessage = function ($connection, $data) use (&$clients) {
          $from_ip = $connection->getRemoteIp();
          foreach ($clients as $to_ip => $to_connection) {
              if ($to_ip !== $from_ip && $to_connection->isEstablished()) {
                  $to_connection->send("{$from_ip}: {$data}");
              }
          }
      };
      
      $worker->onClose = function ($connection) use (&$clients) {
          $ip = $connection->getRemoteIp();
          unset($clients[$ip]);
          echo "Connection from {$ip} closed\n";
      };
      

      };

      // 如果不是在根目录启动,则运行runAll方法 if (!defined('GLOBAL_START')) { Worker::runAll(); } ```

      上述代码创建了一个监听12345端口的TCP服务,当A和B两个IP通过TCP连接到这个服务时,他们发送的消息将会被转发给对方。

      注意:这只是一个非常基础且未加密的聊天室实现,实际应用中可能需要考虑更多因素,比如用户认证、消息加密、断线重连、心跳检测、消息记录等。另外,请确保已经通过composer安装了workerman,并启动服务前先运行composer install命令。

    更多回答
    扫一扫访问手机版