swoole实现websocket推送
$serv->on('Message', function ($server, $frame) {
echo "\n message: " . $frame->data . "\n"; foreach ($server->connections as $key => $value) {
if($frame->fd != $value){
$server->push($value, "客户{$value}:".$frame->data);
}
}
});
注:其实这里需要admin.html发送数据时传token并在message事件中验证是否管理员请求(数据库操作),是才执行推送,否则不做操作
server.php代码如下:
<?php
$serv = new Swoole\Websocket\Server("0.0.0.0", 9502); $serv->on('Open', function ($server, $req) {
echo "\n connection open: " . $req->fd . "\n";
}); $serv->on('Message', function ($server, $frame) {
echo "\n message: " . $frame->data . "\n"; foreach ($server->connections as $key => $value) {
if($frame->fd != $value){
$server->push($value, "客户{$value}:".$frame->data);
}
}
}); $serv->on('Close', function ($server, $fd) {
echo "\n connection close: \n" . $fd;
}); $serv->start();
效果图:
注:客户端websocket自行编写。
<form method="post" action="http://localhost:9502/server.php">
<input name="test" type="text" placeholder="please input something">
<input type="submit" value="submit">
</form>
②将Message事件的push部分删掉,如下:
$serv->on('Message', function ($server, $frame) use($redis) {
echo "\n message: " . $frame->data . "\n";
//将来可用于写数据库信息
});
③添加http的Request事件,如下:
//服务端请求更新数据,这里是http方式
$serv->on('Request', function ($req, $respone) {
global $serv; //全局引入$serv
global $redis; //全局引入redis
print_r($req->post);
if(count($req->post)){ //判断下是否有数据
foreach (@$serv->connections as $key => $value) {
@$serv->push($value, "客户{$value}:".$req->post["test"]);
}
$respone->end("success");
}
});
swoole实现websocket推送的更多相关文章
- 用 Go 编写一个简单的 WebSocket 推送服务
用 Go 编写一个简单的 WebSocket 推送服务 本文中代码可以在 github.com/alfred-zhong/wserver 获取. 背景 最近拿到需求要在网页上展示报警信息.以往报警信息 ...
- Golang websocket推送
Golang websocket推送 在工作用主要使用的是Java,也做过IM(后端用的netty websocket).最近想通过Golang重写下,于是通过websocket撸了一个聊天室. 项目 ...
- 模拟websocket推送消息服务mock工具二
模拟websocket推送消息服务mock工具二 在上一篇博文中有提到<使用electron开发一个h5的客户端应用创建http服务模拟后端接口mock>使用electron创建一个模拟后 ...
- GoEasy实现websocket 推送消息通知到客户端
最近在实现一个推送功能,用户扫描二维码签到,后台及时将签到成功信息推送到浏览器端.排除了前端ajax轮询的方式,决定采用websocket及时推送. 于是发现了第三方websocket推送库GoEas ...
- 小谢第37问:关于websocket推送进度,本地保存进度条,然后跳出页面进入后再显示的问题
1.主要技术点:sessionStorage 会话存储进度 这里在使用之前,顺便说一下cookie.sessionStorage.localStorage 共同点:都是保存在浏览器端,且同源的. 区别 ...
- 利用奇偶数来获取websocket推送时间间隔(或者比较前一个数和下一个数的变化)
利用奇偶数来获取websocket推送时间间隔(或者比较前一个数和下一个数的变化) 在vue中的 data () { return { countTime: 0, newDat ...
- 基于Java的WebSocket推送
WebSocket的主动推送 关于消息推送,现在的解决方案如轮询.长连接或者短连接,当然还有其他的一些技术框架,有的是客户端直接去服务端拿数据. 其实推送推送主要讲的是一个推的概念,WebSocket ...
- web全栈应用【爬取(scrapy)数据 -> 通过restful接口存入数据库 -> websocket推送展示到前台】
作为 https://github.com/fanqingsong/web_full_stack_application 子项目的一功能的核心部分,使用scrapy抓取数据,解析完的数据,使用 pyt ...
- 从构建分布式秒杀系统聊聊WebSocket推送通知
秒杀架构到后期,我们采用了消息队列的形式实现抢购逻辑,那么之前抛出过这样一个问题:消息队列异步处理完每个用户请求后,如何通知给相应用户秒杀成功? 场景映射 首先,我们举一个生活中比较常见的例子:我们去 ...
随机推荐
- Phonegap项目创建 编译 安装 运行
一.创建 Phonegap项目 1. cd workspace 2.创建phonegap项目 cordova create 目录 识别符 显示名 例如:cordova create hello com ...
- mysql索引优化续
(1)索引类型: Btree索引:抽象的可以理解为“排好序的”快速查找结构myisam,innodb中默认使用Btree索引 hash索引:hash索引计算速度非常的快,但数据是随机放置的,无法对范围 ...
- Accessing data in Hadoop using dplyr and SQL
If your primary objective is to query your data in Hadoop to browse, manipulate, and extract it into ...
- 智能家居入门DIY——【五、执行命令】
前面几篇介绍了ESP8266使用AT命令来连接WIFI实现一系列功能.这一篇介绍一下使用Wemos D1 Wifi来进行开发,当然也可以用常见的8针ESP8266来完成(只是需要按网上的方法将Ardu ...
- [C#]读文件
代码段来自 支付宝接口代码示例 /// <summary> /// 从文件读取公钥转公钥字符串 /// </summary> /// <param name=" ...
- 配置myslq提示 the configuration step starting server is taking longer than expected we apologize for thi
.卸载重新安装,勾选日志配置选项,自定义日志输出路径
- js 各种距离
网页可见区域宽 document.body.clientWidth 网页可见区域高 document.body.clientHeight 网页可见区域宽(包括边线的宽) document.b ...
- Air21
handler package com.icil.edi.ws.milestoneService.handler; import java.text.SimpleDateFormat; import ...
- C#串口编程测试收发
原文:http://www.cnblogs.com/vsdot/archive/2013/04/23/3263348.html 基本传递方法:RS232传输要有1位起始位,8位数据位.1位校验位( ...
- leetcode103
class Solution { public: vector<vector<int>> zigzagLevelOrder(TreeNode* root) { vector&l ...