消息推送 HTML5 + swoole websocket server
来源:互联网 发布:算法好难 编辑:程序博客网 时间:2024/06/14 00:35
<?phpnamespace app\index\controller;use swoole_websocket_server;/* * [root@contoso think]# cd /home/myth/www/think && php public/index.php index/Server/run * [root@contoso think]# ps -eaf | grep 'index/Server/run' | grep -v 'grep' | awk '{print $2}' | xargs kill -9 * * [root@contoso ~]# sed -i -- 's/^protected-mode yes/protected-mode no/g' /etc/redis.conf * [root@contoso ~]# systemctl restart redis * [root@contoso ~]# cat > onlines.sh #!/bin/bash for ((i = 1;i < 11;i++)) do echo "redis-cli -h 192.168.10.20 -p 6379 sAdd chat:fd:sets $i" redis-cli -h 192.168.10.20 -p 6379 sAdd chat:fd:sets $i done * [root@contoso ~]# bash onlines.sh * * [myth@contoso ~]$ ab -r -t 3600 -s 3600 -k -n 1800 -c 200 "http://contoso.org:9502/index/server/run?hi=welcome%20to%20china" */class Server { private $redis; private $serv; public function __construct() { ini_set('default_socket_timeout', -1); } public function run() { $this->redis = new \Redis; $this->redis->connect('127.0.0.1', 6379, 0); $this->serv = new swoole_websocket_server("0.0.0.0", 9502); $this->serv->set(array( 'worker_num' => 4, //worker process num 'backlog' => 128, //listen backlog 'max_request' => 50, 'dispatch_mode' => 1, )); $this->serv->on('Open', function ($server, $req) { $this->redis->sAdd('chat:fd:sets',$req->fd); echo "\n connection open: " . $req->fd . "\n"; }); $this->serv->on('Message', function ($server, $frame) { echo "\n message: " . $frame->data . "\n"; $onlines = $this->redis->sMembers('chat:fd:sets'); if (is_array($onlines)) { foreach($onlines as $fd){ @$server->push($fd, $frame->data); } } }); // http://contoso.org:9502/index/server/run?hi=moxi,moxi $this->serv->on('Request', function ($req, $respone) { echo "\n fd: " . $respone->fd . "\n"; if(isset($req->get['hi'])){ // 判断下是否有数据 $onlines = $this->redis->sMembers('chat:fd:sets'); if(is_array($onlines)){ foreach($onlines as $fd){ @$this->serv->push($fd, $req->get['hi']); } } } $respone->end("success"); }); $this->serv->on('Close', function ($server, $fd) { echo "\n connection close: \n" . $fd; }); $this->serv->start(); }}
<!DOCTYPE html><html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> <title>WebSoketClient1</title> <script src="http://code.jquery.com/jquery-1.4.4.min.js" type="text/javascript"></script> <script type="text/JavaScript"> //验证浏览器是否支持WebSocket协议 if (!window.WebSocket) { alert("WebSocket not supported by this browser!"); } var ws; function display() { ws=new WebSocket('ws://contoso.org:9502'); //监听消息 ws.onmessage = function(event) { log(event.data); }; ws.onclose = function(event) { log("socket连接已断开"); }; // 打开WebSocket ws.onopen = function(){ log("socket连接已打开"); }; ws.onerror =function(event){ log("ERROR:" + event.data); }; } var log = function(s) { if (document.readyState !== "complete") { log.buffer.push(s); } else { document.getElementById("contentId").innerHTML += (s + "\n"); } } function sendMsg(){ var msg=document.getElementById("messageId"); ws.send(msg.value); } </script> </head> <body onload="display();" width="120px" height="220px"> <textarea rows="20" cols="30" id="contentId"></textarea> <br/> <input name="message" id="messageId"/> <button id="sendButton" onClick="javascript:sendMsg()" >Send</button> </body> </html>
阅读全文
0 0
- 消息推送 HTML5 + swoole websocket server
- HTML5 WebSocket与消息推送
- swoole实现websocket推送
- swoole实现websocket推送
- Websocket消息推送平台
- websocket消息推送
- WebSocket与消息推送
- WebSocket与消息推送
- WebSocket与消息推送
- java websocket消息推送
- webSocket 消息推送
- WebSocket与消息推送
- WebSocket与消息推送
- 消息推送之Websocket
- WebSocket与消息推送
- WebSocket与消息推送
- WebSocket与消息推送
- WebSocket与消息推送
- session内置对象
- spring中出现的错误:The import org.springframework cannot be resolved
- 广联达线下笔试题
- 01scala语法
- Android加载按键文件流程
- 消息推送 HTML5 + swoole websocket server
- 排列组合公式
- kafka与zookeeper单机集群搭建
- CentOS6.5环境下编译安装MySQL5.6.23
- matlab如何配置libsvm
- 并行计算、分布式计算和云计算的区别
- FTPrep, 56 Merge Intervals
- TP5分页类
- 北大新班子正式起航,带领北大航船驶向何方?