swoole实现发送聊天消息 (单发和群发)_wbj16116的博客-CSDN博客


本站和网页 https://blog.csdn.net/wbj16116/article/details/93859613 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

swoole实现发送聊天消息 (单发和群发)_wbj16116的博客-CSDN博客
swoole实现发送聊天消息 (单发和群发)
wbj16116
已于 2022-07-07 10:55:24 修改
3159
收藏
分类专栏:
swoole
文章标签:
swoole
websocket
后端
于 2019-06-27 11:23:27 首次发布
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wbj16116/article/details/93859613
版权
swoole
专栏收录该内容
4 篇文章
0 订阅
订阅专栏
一、服务端
<?php
$server = new swoole_websocket_server("0.0.0.0", 2345); //自己在阿里云后台开放2345端口
$server->set(array(
'heartbeat_check_interval' =>600, 检查心跳的间隔
'heartbeat_idle_time' =>600 //最大心跳间隔
));
$server->on('open', function ($server, $request) {
$GLOBALS['fd'][$request->fd]['id']=$request->fd;
echo '欢迎登录,你的id='.$request->fd;
});
$server->on('message', function ($server, $request) {
$resut = json_decode($request->data);
$t_id = $resut[0];
$msg = $resut[1];
if(is_numeric($t_id)){ //单发
$num = 0;
foreach ($server->connections as $conn){
if($conn ==$t_id ){ //防止要发送的对方已经不在线了
$server->push($t_id,$msg); //主动发送给$t_d
$num++;
echo '当前在线人数'.$num;
}else{ //群发
foreach ($server->connections as $conn){
$server->push($conn,$msg);
});
$server->on('close', function ($server, $fd) { //离开
echo "{$fd} 下线了\n";
unset($GLOBALS['fd'][$fd]);
});
$server->start();
二客户端
<html>
<head>
<meta charset="UTF-8">
<title>Web sockets test</title>
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
<script type="text/javascript">
var wsServer = 'ws://47.98.24.7:2345'; //服务器地址
var websocket = new WebSocket(wsServer); //创建WebSocket对象
websocket.onopen = function (evt) {
//已经建立连接
$('#send').on('click',function(){
var msg = $('#msg').val();
if(msg == '')
alert('不能发送空消息');
return ;
var arr =Array();
arr[0]=1; //发给谁
arr[1]=msg; //内容
var str = JSON.stringify(arr);
websocket.send(str);
});
$('#send_group').on('click',function(){
var msg = $('#msg').val();
if(msg == '')
alert('不能发送空消息');
return ;
var arr =Array();
arr[0]='all'; //发给谁
arr[1]=msg; //内容
var str = JSON.stringify(arr);
websocket.send(str);
});
};
websocket.onclose = function (evt) {
//已经关闭连接
};
websocket.onmessage = function (evt) {
//收到服务器消息,使用evt.data提取\
console.log(evt.data)
};
websocket.onerror = function (evt) {
//产生异常
};
function send(){
$msg = $('#msg').val();
websocket.send($msg);
</script>
</head>
<body>
<input id="msg" type="text" name="msg">
<input id="send" type="button" name="" value="单发">
<input id="send_group" type="button" name="" value="群发">
</body>
</html>
<?php
wbj16116
关注
关注
点赞
收藏
打赏
评论
swoole实现发送聊天消息 (单发和群发)
一、服务端<?php$server = new swoole_websocket_server("0.0.0.0", 2345); //自己在阿里云后台开放2345端口$server->set(array( 'heartbeat_check_interval' =>600, 检查心里的间隔 'heartbeat_idle_time' =>600...
复制链接
扫一扫
专栏目录
PHP+swoole实现简单多人在线聊天群发
10-22
主要介绍了PHP+swoole实现简单多人在线聊天群发 的相关资料,需要的朋友可以参考下
swoole_client源码解析之send数据
lc的大脑备份
09-27
977
前面我们分析了客户端swoole_client的connect过程,从里面代码可以看出,swClient在connect过程中设置了各种其他动作的回调函数,这里我们接着分析余下的流程,同时把回调函数实现也关注下。
//swoole_client的send函数实现
static PHP_METHOD(swoole_client, send)
char *data;
zend_...
参与评论
您还未登录,请先
登录
后发表或查看评论
Swoole开发消息推送服务
03-20
755
Swoole开发消息推送服务
什么是消息推送服务器
消息服务器可以理解成是一个通道,它是把客户端和服务器、用户与用户、设备与设备之间连接的一个通道。
消息推送服务
应用场景:虎牙游戏直播
虎牙游戏直播
角色分析
主播
观众
频道
哪些地方需要做推送服务呢?
主播开播时,系统发送消息给粉丝。
游戏竞猜结果推送
新闻推送
即时聊天
主动更新APP设置
服务器主动控...
swoole 点对点发送消息推送
热门推荐
奔跑吧笨笨的博客
03-22
1万+
swoole+webSocket 消息推送,或则聊天室,实现。
先上代码,(上菜。。。。)点对点,简单(客户发送,服务回复。)
点对所有,广播
见图所示:参数详解
/**
* 1.实例化 对象
* $host 127.0.0.1 (本机) 外网:0.0.0.0 (ipv4的所有可访问)
* $port 9501 (1024以下 需要root权限)
* $...
swoole消息推送
weixin_34234721的博客
08-09
179
socket.php
// 注释的部分是学习的笔记
<?php
//创建websocket服务器对象,监听0.0.0.0:9502端口
$ws = new swoole_websocket_server("0.0.0.0", 9501);
//监听WebSocket连接打开事件
/**
* 客户端想服务器发送信息是调用函数
* $ws websocket 服务器
* $requ...
swoole实现简单IM聊天室
12-12
493
服务端index.php
<?php
//服务器代码
//创建websocket 服务器
$ws = new swoole_websocket_server("0.0.0.0",9502);
// open
$ws->on('open',function($ws,$request){
echo "新用户 $request->fd 加入。\n";
$GLOBALS...
swoole多人聊天(php)
m0_50593634的博客
04-12
228
多人群聊 (swoole)[php实现]
上代码
服务器端
<?php
//服务器代码
//创建 websocket 服务器代码
$ws = new swoole_websocket_server("0.0.0.0",9500);
// on 函数 open message close
$ws->on('open',function($ws,$request){
echo "新用户 $request->fd 加入。\n";
$GLOBALS['fd'][$reque
php使用swoole实现聊天。
lanjinghexuan的博客
11-21
280
这篇文章有为解决的问题。慎用。
问题会在代码处标注,未解决。
swoole不能在window下使用。我这里使用的是线上服务器linux系统。
这是服务端代码。
没有注释的代码为源码但是又bug。如果不介意代码些许bug仅供自己测试使用可以根据注释使用。
$clientFds = [];
# 创建websocket服务
$server = new swoole_websocket_server("0.0.0.0", 9501);
# 握手成功 触发回调函数
$server->on('ope
swoole的socket实现聊天功能
Richie
04-07
2399
前言
贵有恒,何必三更起五更睡;最无益,只怕一日暴十寒。
偶然打开CSDN,忽然发现距离上一篇文章整整过去了一年。感慨时间过去飞快。这一年忙忙碌碌,但又没什么变化。一周一篇文章的约定,不知从哪天的忙碌开始抛到脑后。
裸辞后,休息了一个月,最近开始整理知识点。突然想起来要记录。那就坚持吧。不知道能坚持几天,但有开始总是好的。
实现思路
实现socket服务器。能连接、接受消息并作出回应、中断退出。...
swoole 服务器发消息,PHP+swoole实现简单的聊天消息推送
weixin_29881131的博客
08-09
716
Swoole 使 PHP 开发人员可以编写高性能高并发的 TCP、UDP、Unix Socket、HTTP、 WebSocket 等服务,让 PHP 不再局限于 Web 领域。Swoole4 协程的成熟将 PHP 带入了前所未有的时期, 为性能的提升提供了独一无二的可能性。Swoole 可以广泛应用于互联网、移动通信、云计算、 网络游戏、物联网(IOT)、车联网、智能家居等领域。使用 PHP + ...
使用swoole协程推送微信消息
webdev_l的博客
11-04
609
swoole协程批量推送微信模板消息
微信小程序使用swoole实现websocket消息推送
zhmoon的博客
11-26
1997
swoole我个人建议在linux环境下操作,毕竟在windows下有那么一点点麻烦。首先linux安装php和swoole环境(有手就行,建议百度)。
因为我们的业务是实现消息推送,也就是在完成特定操作时向swoole发送一个请求,然后swoole能够推送回来这条请求到指定的位置。
直接上代码
<?php
//创建websocket服务器对象,监听0.0.0.0:9502端口
$ws = new swoole_websocket_server("0.0.0.0", 9501);
//监听WebSo
php异步短信,基于Swoole的异步消息发送(短信、邮件等)PHP Yaf
weixin_29169899的博客
04-01
315
本文只做自己学习笔记记录,如有涉及他人版权,请联系我第一时间修改删除背景介绍:当用户触发了某个操作后,发送短信消息给另外的一个或者多个人;如果用户量比较少,同时发送消息的人也比较少时,直接在触发操作完成时发送消息即可,但是如果同时发送消息的人非常多咋办?到时系统可能会一直卡在“消息正在发送中......” 这种状态,用户体验太差了。想到可以使用异步的方式,当用户触发操作完成后,把发送消息的任务放到...
swoole异步群发邮件
不求前途凶吉,但求落幕无悔!
01-30
1473
服务器代码
先用cli方式启动服务器文件
$serv = new swoole_server("127.0.0.1", 9501);
//设置异步任务的工作进程数量
$serv->set(array('task_worker_num' => 4));
//监听数据接收事件
$serv->on('receive', function($serv, $fd, $from_id, $data
thinkphp6 think-swoole websocket发送完成和常用方法和客户端回调
a603423130的博客
05-05
5020
swoole.websocket.Connect建议定义;每个客户端都会先建立握手,这里是必经之处。比如在这里记录你自己程序用户与客户端的连接ID(fd)等。
swoole.websocket.Test是自定义的test消息接收事件,该类事件定义的事件类 是用于接收客户端发送过来的消息并自行处理后续逻辑。该类事件可以定义任意个,比如一个项目可以有聊天、客服、直播等多种实时通讯场景,你可以分别定义不...
websocket实现消息群发
weixin_44569326的博客
01-03
1711
pom文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven
webSocket实现点对点、群发消息通知
最新发布
W_Q_Q_的博客
04-22
1183
第一:配置Websocket请求的路径
package com.ella.operation.server.client;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.config.annotation.We.
SpringBoot 集成 WebSocket 实现消息群发推送
盛夏温暖流年
02-23
757
一. 什么是 WebSocket
WebSocket 是一种全新的协议。它将 TCP 的 Socket(套接字)应用在了web page上,从而使通信双方建立起一个保持在活动状态的连接通道,并且属于全双工通信(双方同时进行双向通信)。
二. WebSocket 的特点
WebSocket 的最大特点是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。
其他特点包括:
建立在 TCP 协议之上,服务器端的实现比较容易。
与 HTTP 协议有
基于Swoole框架的WebSocket的简易在线聊天
平凡老者
03-13
2748
PHP聊天室,Swoole聊天室
swoole 启动流程_Swoole源码分析之数据接收与发送
weixin_39595430的博客
01-17
354
Swoole源码分析之数据接收与发送目录:探索什么启动流程process模式base模式数据读写验证脚本总结探索什么事情的起因是这样的,进行Swoole应用开发的时候,发现各个Worker可以给任意一个客户端发送消息,即调用$serv->send($fd, $data),而不用关心客户端第一次是哪个Worker接收的数据.如果你细细一想,发现这是一件很神奇的事情,多个不同的进程居然可以给任意...
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:编程工作室
设计师:CSDN官方博客
返回首页
wbj16116
CSDN认证博客专家
CSDN认证企业博客
码龄6年
暂无认证
149
原创
3万+
周排名
52万+
总排名
49万+
访问
等级
5639
积分
34
粉丝
57
获赞
21
评论
106
收藏
私信
关注
热门文章
Vue Element-ui 页面跳转
29384
foreach 的各种用法
28705
JQ 获取多个相同name 的 input框的 value 值
24445
微信公共号给客户发送消息提醒/模板消息(如业务到期提醒 ,订单提醒,帐户变动提醒)
17604
微信公众号自定义回复(关键词回复:文本消息、图文消息)
13123
分类专栏
beego
2篇
Yii2
10篇
queue
1篇
PHP
2篇
ellasticsearch
1篇
supervisor
1篇
docker
公共号
9篇
微信开发
13篇
小程序
5篇
JQ
23篇
POST 请求
1篇
redis
3篇
七牛
4篇
定时任务
2篇
正则表达式
4篇
标签转义
1篇
mysql
14篇
GD库处理图片
2篇
TP引入第三方类库
1篇
Linux
10篇
支付宝
1篇
TP5
12篇
EXCEL
6篇
开发工具
1篇
composer
3篇
Laravel
14篇
Element-ui
wokerman
1篇
swoole
4篇
最新评论
swoole +websocket 限时通信(聊天功能)
wahahachuang6:
做websocket开发,可以自己搭建,也可以试试第三方的websocket框架。我近期在使用的GoEasy这个框架,在应对我们项目这种突发性的高并发需求上,表现不错。有websocket使用需求的也可以去看看。
vscode设置左边栏和代码区字体大小
奇妙之二进制:
前排支持一下,可以的话来我博客看看吧
beego c.Ctx.SetCookie c.Ctx.GetCookie 失效问题
GG-BY:
我是您的粉丝,我想跟您学技术,能留个联系方式吗
微信公共号给客户发送消息提醒/模板消息(如业务到期提醒 ,订单提醒,帐户变动提醒)
世界达:
你如
vscode设置左边栏和代码区字体大小
彼 方:
来占坑,👍 坚持写博客,好的习惯,值得学习,欢迎回访我的博客
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
bee : 无法将“bee”项识别为 cmdlet, 没有 bee.exe文件
yii2 inverseOf 反向关联
yii2 transactions 根据场景值开启事务
2022年7篇
2021年16篇
2020年13篇
2019年67篇
2018年86篇
2017年1篇
目录
目录
分类专栏
beego
2篇
Yii2
10篇
queue
1篇
PHP
2篇
ellasticsearch
1篇
supervisor
1篇
docker
公共号
9篇
微信开发
13篇
小程序
5篇
JQ
23篇
POST 请求
1篇
redis
3篇
七牛
4篇
定时任务
2篇
正则表达式
4篇
标签转义
1篇
mysql
14篇
GD库处理图片
2篇
TP引入第三方类库
1篇
Linux
10篇
支付宝
1篇
TP5
12篇
EXCEL
6篇
开发工具
1篇
composer
3篇
Laravel
14篇
Element-ui
wokerman
1篇
swoole
4篇
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
打赏作者
wbj16116
你的鼓励将是我创作的最大动力
¥2
¥4
¥6
¥10
¥20
输入1-500的整数
余额支付
(余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值