socket.php

// 注释的部分是学习的笔记

<?php
//创建websocket服务器对象,监听0.0.0.0:9502端口
$ws = new swoole_websocket_server("0.0.0.0", ); //监听WebSocket连接打开事件
/**
* 客户端想服务器发送信息是调用函数
* $ws websocket 服务器
* $request 客户端信息
* $request->fd 客户端唯一编号
*
* */
$ws->on('open', function ($ws, $request) {
//var_dump($request->fd, $request->get, $request->server);
//$ws->push($request->fd, "hello, welcome\n");
echo "connection open:{$request->fd}\n";
//$ws->push($request->fd, json_encode(['hello','world']));
}); //监听WebSocket消息事件
/**
* $frame 客户端发送的信息
* $frame->fd 客户端的唯一编号
* $frame->data 客户端发送的信息
* */
$ws->on('message', function ($ws, $frame) {
//echo "接收到的信息: {$frame->data}\n";
//$ws->push($frame->fd, "server: {$frame->data}");
//echo "服务器已接收:【".$frame->fd."】";
//$ws->push($frame->fd, json_encode(['hello','world'.$frame->data])); // 1.客户端发送过来的信息
$content = $frame->data;
echo "服务器接收到信息:".$content;
// 2.讲消息发送个所有客户端
foreach ($ws->connections as $fd){
$ws->push($fd,$content);
}
}); //监听WebSocket连接关闭事件
$ws->on('close', function ($ws, $fd) {
echo "client-{$fd} is closed\n";
echo "已断开链接:{$fd}";
}); $ws->start();

客户端显示数据:socket.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>客户端显示数据</title>
<script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.min.js" ></script>
</head>
<body>
<ul id="show"> </ul>
</body>
<script> $(function(){
//1.创建websocket客户端
var wsServer = 'ws://192.168.70.167:9501';
var websocket = new WebSocket(wsServer); //2.注册事件
//2.1 当客户端和服务器简历连接时执行该函数
websocket.onopen = function(){
//console.log("连接上了服务器");
addStr("连接上了服务器")
}
//2.2 当服务器想客户端发送消息时 执行该函数
// event.data 就是服务器发送过来的信息
websocket.onmessage = function(event){
console.log("接收到服务器发送的信息:"+event.data);
addStr(event.data); }
// 2.3 当客户端和服务器断开连接时执行函数
websocket.onclose = function(event){
console.log("断开了链接");
} }); /*websocket.onopen = function(){
//console.log("连接上了服务器");
websocket.send("连接上了服务器")
}*/
function addStr(str){
$str = "<li>"+str+"</li>";
$("#show").append($str);
}
</script>
</html>

客户端发送数据:socket_add.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>客户端显示数据</title>
<script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.min.js" ></script>
</head>
<body>
<ul id="show"> </ul>
</body>
<script> $(function(){
//1.创建websocket客户端
var wsServer = 'ws://192.168.70.167:9501';
var websocket = new WebSocket(wsServer); //2.注册事件
//2.1 当客户端和服务器简历连接时执行该函数
websocket.onopen = function(){
//console.log("连接上了服务器");
addStr("连接上了服务器")
}
//2.2 当服务器想客户端发送消息时 执行该函数
// event.data 就是服务器发送过来的信息
websocket.onmessage = function(event){
console.log("接收到服务器发送的信息:"+event.data);
addStr(event.data); }
// 2.3 当客户端和服务器断开连接时执行函数
websocket.onclose = function(event){
console.log("断开了链接");
} }); /*websocket.onopen = function(){
//console.log("连接上了服务器");
websocket.send("连接上了服务器")
}*/
function addStr(str){
$str = "<li>"+str+"</li>";
$("#show").append($str);
}
</script>
</html>

运行服务端

php socket.php

运行客户端

客户端显示数据:192.168.70.168:9501/socket.html (可以打开多个窗口,查看数据)

客户端发送数据:192.168.70.168:9501/socket_add.html

swoole消息推送的更多相关文章

  1. 使用swoole进行消息推送通知,配合vb.net进行客户端开发一样爽[开发篇]

    在以前的项目中,就曾听说过swoole的大名,想用来进行消息推送,但是当时只是有了初步的了解,并不敢大胆的运用到线上产品.所谓 识不足则多虑,威不足则多怒.所以就是怕,只能跟领导说了运用极光的推送功能 ...

  2. 实现websocket 主动消息推送,用laravel+Swoole

    近来有个需求:想实现一个可以主动触发消息推送的功能,这个可以实现向模板消息那个,给予所有成员发送自定义消息,而不需要通过客户端发送消息,服务端上message中监听传送的消息进行做相对于的业务逻辑. ...

  3. SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)

     SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=>提升,5个Demo贯彻全篇,感兴趣的玩才是真的学) 官方demo:http://www.asp.net/si ...

  4. 【原创分享·微信支付】C# MVC 微信支付之微信模板消息推送

    微信支付之微信模板消息推送                    今天我要跟大家分享的是“模板消息”的推送,这玩意呢,你说用途嘛,那还是真真的牛逼呐.原因在哪?就是因为它是依赖微信生存的呀,所以他能不 ...

  5. 基于SignalR的消息推送与二维码描登录实现

    1 概要说明 使用微信扫描登录相信大家都不会陌生吧,二维码与手机结合产生了不同应用场景,基于二维码的应用更是比较广泛.为了满足ios.android客户端与web短信平台的结合,特开发了基于Singl ...

  6. C# BS消息推送 SignalR介绍(一)

    1. 前言 本文是根据网上前人的总结得出的. 环境: SignalR2.x,VS2015,Win10 介绍 1)SignalR能用来持久客户端与服务端的连接,让我们便于开发一些实时的应用,例如聊天室在 ...

  7. iOS 之消息推送(个推)---个人小结

    前言:自从上个星期开始整这个推送,弄了差不多一个星期,今天终于给整好了,因此现在来记录这段"奇妙"的旅程. 我们公司使用的消息推送是用的第三方--个推,这里不得不说一下,个推的技术 ...

  8. WebSocket与消息推送

    B/S结构的软件项目中有时客户端需要实时的获得服务器消息,但默认HTTP协议只支持请求响应模式,这样做可以简化Web服务器,减少服务器的负担,加快响应速度,因为服务器不需要与客户端长时间建立一个通信链 ...

  9. 分分钟搞定IOS远程消息推送

    一.引言 IOS中消息的推送有两种方式,分别是本地推送和远程推送,本地推送在http://my.oschina.net/u/2340880/blog/405491这篇博客中有详细的介绍,这里主要讨论远 ...

随机推荐

  1. netty如何知道连接已经关闭,socket心跳,双工?异步?

    https://stackoverflow.com/questions/10240694/java-socket-api-how-to-tell-if-a-connection-has-been-cl ...

  2. Java基础之理解Annotation

    一.概念 Annontation是Java5开始引入的新特征.中文名称一般叫注解.它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素(类.方法.成员变量等)进行关 ...

  3. 移动端适配方案 flexible.js

    前言 移动端适配一直以来都是前端开发中不可或缺的重要组成部分,如果没有了它,那么你做出来的页面极有可能会出现各种意外(写出来的页面与设计稿之间的差别).所有我们得找到一种相对来说让人比较满意的解决方案 ...

  4. Asp.net 子域共享cookie

    最近项目遇到要共享cookie的问题,本来后台保存session用的是Redis来保存数据的.所以只需要2个站点发的ASP.NET_SessionId是相同的就可以,并且它的Domain 是父级域名. ...

  5. Spark2.2+ES6.4.2(三十二):ES API之index的create/update/delete/open/close(创建index时设置setting,并创建index后根据avro模板动态设置index的mapping)

    要想通过ES API对es的操作,必须获取到TransportClient对象,让后根据TransportClient获取到IndicesAdminClient对象后,方可以根据IndicesAdmi ...

  6. windows多线程同步--互斥量

    关于互斥量的基本概念:百度百科互斥量 推荐参考博客:秒杀多线程第七篇 经典线程同步 互斥量Mutex 注意:互斥量也是一个内核对象,它用来确保一个线程独占一个资源的访问.互斥量与关键段的行为非常相似, ...

  7. 微软BI SSRS 2012 Metro UI Win 8 风格的报表课程案例全展示

    开篇介绍 微软BI SSRS 2012 Metro UI 高端报表视频教程 (http://www.hellobi.com/course/15)课程从2014年6月开始准备,于2014年9月在 天善B ...

  8. CSS实现屏幕显示与打印结果不一样的方法

    文章作者:Tony Qu原创 一种方法是为屏幕显示和打印分别准备一个css文件,如下所示: 用于屏幕显示的css: <link rel="stylesheet" href=& ...

  9. Tuxedo低版本客户端(Tuxedo 9)连接到高版本Tuxedo服务端(Tuxedo 12.1.3)的问题

    经过我实测,是没问题的.但是客户端的Tuxedo DLL必须全部是Tuxedo 9的DLL,不能混用.不然即使用Dependency Walker 分析DLL依赖完全正确,但是实际运行时结果也会出现奇 ...

  10. 学习一个Vue模板项目

    最开始学习Vue的时候,不建议直接使用模板,而应该自己从头写起.模板都是人写的,要坚信"人能我能".只有自己亲自实践,才能促进自己主动思考,才能对模板.框架有深刻的理解. 在Git ...