使用workerman写一个小的聊天室

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

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

<?php

use Workerman\Worker;

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 \r\n ");  //当前链接的用户id是$connection->uid

  }

}

function handel_close($connection) {

  global $text_worker;

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

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

  }

}

$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回车随便输入内容回车

  

 

 

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

谢谢大家支持

posted @ 2021-06-09 17:39  闫月Emily  阅读(312)  评论(0编辑  收藏  举报