您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
三六零分类信息网 > 哈尔滨分类信息网,免费分类信息发布

PHP+swoole实现聊天群发功能

2025/8/10 17:23:59发布6次查看
本篇文章主要介绍php+swoole实现聊天群发功能,感兴趣的朋友参考下,希望对大家有所帮助。
php代码:
$serv = new swoole_websocket_server("127.0.0.1",3999);//服务的基本设置$serv->set(array('worker_num' => 2,'reactor_num'=>8,'task_worker_num'=>1,'dispatch_mode' => 2,'debug_mode'=> 1,'daemonize' => true,'log_file' => __dir__.'/log/webs_swoole.log','heartbeat_check_interval' => 60,'heartbeat_idle_time' => 600,));$serv->on('connect', function ($serv,$fd){// echo "client:$fd connect.".php_eol;});//测试receive$serv->on("receive",function(swoole_server $serv,$fd,$from_id,$data){// echo "receive#{$from_id}: receive $data ".php_eol;});$serv->on('open', function($server, $req) {// echo "server#{$server->worker_pid}: handshake success with fd#{$req->fd}".php_eol;;// echo php_eol;});$serv->on('message',function($server,$frame) {// echo "message: ".$frame->data.php_eol;$msg=json_decode($frame->data,true);switch ($msg['type']){case 'login':$server->push($frame->fd,"欢迎欢迎~");break;default:break;}$msg['fd']=$frame->fd;$server->task($msg);});$serv->on("workerstart",function($server,$workerid){// echo "workerstart: ".$workerid.php_eol;// echo php_eol;});$serv->on("task","on_task");$serv->on("finish",function($serv,$task_id,$data){return ;});$serv->on('close', function($server,$fd,$from_id) {// echo "connection close: ".$fd.php_eol;// echo php_eol;});$serv->start();function on_task($serv,$task_id,$from_id,$data) {switch ($data['type']){case 'login':$send_msg="说:我来了~";break;default:$send_msg="说:{$data['msg']['speak']}";break;}foreach ($serv->connections as $conn){if ($conn!=$data['fd']){if (strpos($data['msg']['name'],"游客")===0){$name=$data['msg']['name']."_".$data['fd'];}else{$name=$data['msg']['name'];}}else{$name="我";}$serv->push($conn,$name.$send_msg);}return;}function on_finish($serv,$task_id,$data){return true;}
前端代码:
<!doctype html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><title>websocket测试</title> <script language="javascript"type="text/javascript" src="jquery-1.12.0.min.js"> </script></head><body><h2>websocket test</h2> 昵称:<input type="text" id="name" size="5" value="游客"/> <input type="text" id="content"> <button onclick="speak_to_all()">发送</button><br/><br/><textarea id="message" style="overflow-x:hidden" rows="10" cols="50"></textarea> <p id="output"></p></body> <script language="javascript"type="text/javascript"> var wsuri ="ws://127.0.0.1:3999/"; var output; function init() { output = document.getelementbyid("output"); testwebsocket();}function testwebsocket() { websocket = new websocket(wsuri); websocket.onopen = function(evt) { onopen(evt) }; websocket.onclose = function(evt) { onclose(evt) }; websocket.onmessage = function(evt) { onmessage(evt) }; websocket.onerror = function(evt) { onerror(evt) }; }function get_speak_msg(){var name=document.getelementbyid("name").value;var speak=document.getelementbyid("content").value;var json_msg='{"name":"'+name+'","speak":\"'+speak+'"}';return json_msg;}function pack_msg(type,msg){return '{"type":"'+type+'","msg":'+msg+'}';}function onopen(evt) {append_speak("已经联通服务器.........");speak_msg=get_speak_msg();send_msg=pack_msg("login",speak_msg);dosend(send_msg);}function onclose(evt) { append_speak("俺老孙去也!");} function onmessage(evt) {append_speak(evt.data);}function onerror(evt) {alert(evt.data);}function dosend(message) { websocket.send(message);}function append_speak(new_msg){document.getelementbyid("message").value=document.getelementbyid("message").value+new_msg+"\n";document.getelementbyid('message').scrolltop = document.getelementbyid('message').scrollheight;}function speak_to_all(){send_msg=pack_msg("speak",get_speak_msg());if(document.getelementbyid("content").value==""){return;}dosend(send_msg);document.getelementbyid("content").value="";}init();</script></html>
总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。
相关推荐:
php模块化安装详细步骤教程
php邮箱验证实例详解
php文件操作的方法及实例详解
以上就是php+swoole实现聊天群发功能的详细内容。
哈尔滨分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product