zoukankan      html  css  js  c++  java
  • 使用workerman写一个小的聊天室

    workerman是一个不依赖于其他框架的独立工具,主要使用的是协议,包含sokect协议,http协议,text协议,也可以自定义协议.

    代码部分,我这边使用的是php语言Tp5的框架也可以不用框架自己写。安装好workerman之后,能引用到autoloader.php文件,首先创建一个start.php文件,代码如下。

    <?php

    use WorkermanWorker;

    require_once __DIR__ . '/vendor/workerman/workerman/Autoloader.php';

    $global_user = 0; //定义一个全局的用户人数变量

    function handel_connect($connection) {

      global $text_worker,$global_user;  //将worker对象和用户数都设为全局变量

      $connection->uid = ++$global_user; //先给链接赋值用户id

    }

    function handel_message($connection,$data) {

      global $text_worker;

      foreach($text_worker->connections as $conn) { //将worker对象链接有多少个就将$data消息内容发送给多少人

        $conn->send(" user[{$connection->uid}]  said $data ");  //当前链接的用户id是$connection->uid

      }

    }

    function handel_close($connection) {

      global $text_worker;

      foreach($text_worker->connections as $conn) {

        $conn->send(" user[{$connection->uid}] said close ");

      }

    }

    $text_worker = new Worker("text://0.0.0.0:2222"); //创建worker对象

    $text_worker->count = 1;

    $text_worker->onConnect = 'handel_connect'; //赋值连接方法

    $text_worker->onMessage = 'handel_message';//赋值消息方法

    $text_worker->onClose = 'handel_close';//赋值关闭方法

    Worker::runAll(); //别忘了worker全部启动

    ?>

    怎么测试呢?

    首先text协议用telnet来访问

    1,cmd到当前文件的位置然后 使用php命令启动telnet服务器,打开之后测试期间不能关闭。如果想更改代码需重新启动

      php start.php 回车启动服务器

      

    2,cmd打开新的页面 使用telnet命令访问

      telnet 127.0.0.1 2222回车随便输入内容回车

      

     可以多打开几个页面来进行交互,就这样简单的聊天室就建好了。

    谢谢大家支持

  • 相关阅读:
    vue---思维导图
    vscode----vue中HTML代码tab键自动补全
    css选择器---继承,优先级,层叠
    前端性能优化---减少http请求数量和减少请求资源的大小
    浏览器的一个请求从发送到返回都经历了什么?
    【FAQ】maven包引入版本引发的问题
    【spring】Spring Boot:定制自己的starter
    【redis基础】
    【spring】SpringBoot之Servlet、Filter、Listener配置
    【spring cloud】服务启动后正常,但是无法上线,一直处于down状态
  • 原文地址:https://www.cnblogs.com/sxiangyues/p/14867903.html
Copyright © 2011-2022 走看看