下面本篇文章主要给大家介绍一下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;

}

前端代码:

WebSocket测试

WebSocket Test

昵称:

发送

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();

相关视频教程推荐:《PHP教程》

本文转载于:脚本之家,如有侵犯,请联系a@php.cn删除

多人聊天功能代码php,PHP+swoole实现简单多人在线聊天群发效果相关推荐

  1. 多人聊天功能代码php,基于swoole实现多人聊天室

    本文实例为大家分享了swoole创建多人多房间聊天室的具体代码,供大家参考,具体内容如下 核心的swoole代码 基本的cs(client-sercer)结构不变,这里利用的是redis的哈希和set ...

  2. 简单的一个在线聊天室

    闲着无聊写一个基于数据库写一个在线聊天室 前几天闲着没事突然想起写个小程序玩玩,就想到了写个在闲聊天室,话不多说直接开始. 1.第一当然是先写一个聊天界面啦,我写的界面是这样: 聊天页面 2.写这个程 ...

  3. python人狗大战游戏_day22 01 初识面向对象----简单的人狗大战小游戏

    day22 01 初识面向对象----简单的人狗大战小游戏 假设有一个简单的小游戏:人狗大战   怎样用代码去实现呢? 首先得有任何狗这两个角色,并且每个角色都有他们自己的一些属性,比如任务名字nam ...

  4. php+Ajax+Mysql 创建简单的一对一在线聊天室

    最近在学习Ajax异步刷新的时候么突然想到能不能这个技术做点什么事情,网上百度了一下,发现好多人用这个写在线聊天,自己也想试试.不过,做完之后发现这种方法写的聊天室,真的很耗资源,不过就当练手学习吧. ...

  5. java udp聊天_Java UDP实现聊天功能代码

    我以前经常写的是基于TCP的网络编程,由于TCP建立连接鼻血要经过三次握手连接,服务器端需要阻塞式等待客户端的连接.而UDP则是可以直接向目的地址的目的端口上发送数据包,由于它只负责发送出去就好,不管 ...

  6. java实现仿微信app聊天功能_Android仿微信语音聊天功能

    本文实例讲述了Android仿微信语音聊天功能代码.分享给大家供大家参考.具体如下: 项目效果如下: 具体代码如下: AudioManager.java package com.xuliugen.we ...

  7. python如何实现微信自动聊天_如何利用python实现微信智能聊天功能,具体该怎么做?...

    这个实现不难,需要先安装一下itchat库,之后注册一下图灵机器人,最后就可以编程实现微信智能聊天功能了,下面我简单介绍一下实现过程,实验环境win10+python3.6+pycharm5.0,主要 ...

  8. JavaWeb--使用Websocket实现在线聊天功能

    首先简单介绍下WebSocket,WebSocket是HTML5中内容,是基于TCP的一种新的网络协议,它支持全双工.长连接的通信.在它出现之前,实时消息发送与接收通过轮询实现,但是频繁与服务器建立连 ...

  9. 支持阅后即焚的即时在线聊天软件工具—J2L3x 消息删除和回复功能值得推荐

    Snapchat的阅后即焚功能在美国的巨大成功,国内也开始纷纷效仿.随着腾讯.阿里两大巨头的加入,阅后即焚功能在国内火了.在密集的宣传下,更多的人开始关注和了解这个功能.阅后即焚其核心功能其实很简单: ...

最新文章

  1. 编译android.mk
  2. LabelImg 影像標註工具使用教學,製作深度學習用的資料集
  3. 吴恩达CNN卷积神经网络第2周作业ResNets
  4. plt.subplot()和plt.subplots(),plt.gca(),
  5. Linux 与Windows 7双系统默认引导顺序的修改
  6. springboot 2中文手册_熬夜整理了一套最新版的Java面试题和开发手册(附答案)...
  7. 【Caffe实践】基于CNN的性别、年龄识别的代码实现
  8. Windows XP刻录机不能刻盘显示函数不正确的解决办法
  9. linux霸天虎3.6.1+windows平台 无线WEB CRACK
  10. 华三comware跳槽_H3C Comware
  11. MacBook安装wget几种方式
  12. 一文看懂常见域名后缀的含义
  13. 【C语言基础学习笔记】一、初始C语言(2)
  14. 计算机的格式刷,“excle怎样取消格式刷“电脑上格式刷怎么用excel2000
  15. 2.自动加载(phalapi框架总结)
  16. java来电_java串口 来电显示
  17. 给大家普及呼叫中心和电话营销系统相关知识--中继线路
  18. python判断火车票座位_Python3 实现火车票查询工具
  19. Exchange 暴力破解与防范
  20. POI:java导出excel,java设置单元格公式,求和

热门文章

  1. Laravel 5.8 前瞻 1
  2. pyboard呼吸灯代码分享
  3. Python异常和异常处理
  4. TO-B类软件产品差异化
  5. win7系统屏蔽全/半角切换问题
  6. 联想宣布推出升级版数据中心产品组合——搭载全新英特尔(R)处理器和持久性内存且安全性增强
  7. python 爬虫 Form Data爬取穷游网的数据
  8. Spring中Bean的生命周期以及三级缓存介绍
  9. java界面小程序-模拟算卦六爻
  10. 制作一个简单HTML+CSS个人网页设计(web前端大作业)