workerman实现聊天室
生活随笔
收集整理的這篇文章主要介紹了
workerman实现聊天室
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Workerman的一些應用方向如下
現在我們就可以做一個聊天室,關鍵代碼如下:
<?php /*** Created by PhpStorm.* User: John* Date: 2019/4/3* Time: 13:19*/use Workerman\Worker;require __DIR__.'/../Workerman-framework/Autoloader.php';// 當客戶端連上來時分配uid,并保存連接,并通知所有客戶端 function handle_connection($connection) {}// 當客戶端發送消息過來時,轉發給所有人 function handle_message($connection, $data) {global $text_worker;foreach($text_worker->connections as $conn){$conn->send($data);} }// 當客戶端斷開時,廣播給所有客戶端 function handle_close($connection) {}// 創建一個文本協議的Worker監聽2347接口 $text_worker = new Worker("websocket://0.0.0.0:2347");// 只啟動1個進程,這樣方便客戶端之間傳輸數據 $text_worker->count = 1;$text_worker->onConnect = 'handle_connection'; $text_worker->onMessage = 'handle_message'; $text_worker->onClose = 'handle_close';Worker::runAll(); 復制代碼前端代碼如下
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title> </head> <body> <div style="margin: 0 auto;width: 800px"><h2>聊天室</h2><textarea type="text" style="border: 1px solid black;width: 800px;height: 200px;" id="his"></textarea><input type="text" style="width:740px" id="sendMsg"> <button id="send">發送</button> </div> </body> </html> <script src="http://code.jquery.com/jquery-latest.js"></script> <script>$(function () {var ws = new WebSocket("ws://127.0.0.1:2347");var storage = window.localStorage;if(!storage.getItem('name')){var name=prompt("請輸入您的名字","");storage.setItem('name',name);}$('#send').click(function () {msg = $('#sendMsg').val();$('#sendMsg').val('');ws.send(storage.getItem('name')+':'+msg);});ws.onopen = function() {$('#his').append("服務器連接成功.....");$('#his').append("\n");};ws.onmessage = function(e) {$('#his').append(e.data);$('#his').append("\n");};}); </script> 復制代碼咱們這里使用了websocket協議,打開頁面即建立一個連接;
解釋下php代碼
onConnet就是連接時完成三次握手時,執行的觸發動作;$connection是連接對象;
onMessage是當客戶端通過連接發來數據時(Workerman收到數據時)觸發的回調函數;data是對應協議decode(解碼)了的數據;$connection是連接對象
onClose當客戶端連接與Workerman斷開時觸發的回調函數。不管連接是如何斷開的,只要斷開就會觸發onClose。每個連接只會觸發一次onClose(注意:這里的斷開指的是關閉瀏覽器,不是斷網;斷網的話需要做心跳檢測來判斷)
代碼傳送門(github.com/BoHongtao/W…)
示例demo(github.com/BoHongtao/W…)
轉載于:https://juejin.im/post/5caae542e51d452b084af4b4
總結
以上是生活随笔為你收集整理的workerman实现聊天室的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苏宁易购高鑫跑步进场,“即时零售”或成疫
- 下一篇: Fw:[一恒茶社] 作为大学教师,我 感