WorkerMan学习篇:简单多人聊天

使用workerman简单的多人聊天室

原创  2016年08月02日 13:15:03
  • 3560

代码如下:

[php]  view plain  copy
  1. /** 
  2.  * Created by PhpStorm. 
  3.  * User: raid 
  4.  * Date: 2016/8/2 
  5.  * Time: 11:03 
  6.  */  
  7. use Workerman\Worker;  
  8. require_once '../Workerman/Autoloader.php';  
  9.   
  10. $global_uid = 0;  
  11.   
  12. // 当客户端连上来时分配uid,并保存连接,并通知所有客户端  
  13. function handle_connection($connection) {  
  14.     global $text_worker$global_uid;  
  15.     // 为这个链接分配一个uid  
  16.     $connection->uid = ++$global_uid;  
  17.     foreach ($text_worker->connections as $conn) {  
  18.         $conn->send("user[{$connection->uid}] online");  
  19.     }  
  20. }  
  21.   
  22. // 当客户端发送消息过来时,转发给所有人  
  23. function handle_message($connection$data) {  
  24.     global $text_worker;  
  25.     foreach ($text_worker->connections as $conn) {  
  26.         $conn->send("user[{$connection->uid}] said: $data");  
  27.     }  
  28. }  
  29.   
  30. // 当客户端断开时,广播给所有客户端  
  31. function handle_close($connection) {  
  32.     global $text_worker;  
  33.     foreach ($text_worker->connections as $conn) {  
  34.         $conn->send("user[{$connection->uid}] logout");  
  35.     }  
  36. }  
  37.   
  38. $text_worker = new Worker("websocket://0.0.0.0:2347");  
  39.   
  40. $text_worker->count = 1;  
  41.   
  42. $text_worker->onConnect = 'handle_connection';  
  43. $text_worker->onMessage = 'handle_message';  
  44. $text_worker->onClose = 'handle_close';  
  45.   
  46. Worker::runAll();  

HTML页面展示:

[php]  view plain  copy
  1.   
  2. "en">  
  3.   
  4.     "UTF-8">  
  5.     Simple Chat  
  6.   
  7.   
  8. Simple Chat

      
  9. "text" id="msg">  
  10. "button" id="send">send  
  11. "content">
  
  •   
  •   
  • "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 += "

    " + e.data + "

    "
    ;  
  •         };  
  •   
  •   
  •     };  
  •   
  •   
  •  
  • 你可能感兴趣的:(php框架之workerman)