使用swoole进行消息推送通知,配合vb.net进行客户端开发一样爽[
副标题[/!--empirenews.page--]
在以前的项目中,就曾听说过swoole的大名,想用来进行消息推送,但是当时只是有了初步的了解,并不敢大胆的运用到线上产品。所谓?识不足则多虑,威不足则多怒、所以就是怕,只能跟领导说了运用极光的推送功能,而且还说出了一定的理由,领导自然也只有相信了,那就用极光推送吧! 最近闲来无事,又重新温习了一下swoole的消息通知功能,虽然在项目开发当时,也曾实现过简单的操作的,但是这次温习更加深了学习,配合vb.net进行开发,感觉还是棒棒哒,下面是一套实现过程,如有需要参考,请拿去,不谢! 首先,我的开发平台是windows,虽然本人也装有virtual box虚拟机,但是那玩意儿太耗内存cpu了,开起来搞实在不想搞。所以,就用了cygwin进行配置开发环境搭建,这里我就不说具体安装步骤了,给个链接吧,一步步按着操作就行了。 。 ps: 如果你win系统里已经安装了一套wamp环境,在cygwin中使用php或其他和win有相同名称命令时,请记得使用全路径 如:/bin/php index.php,/bin/find / -name "init*" 第二步、编写php服务端程序,命名 test_tcp_server.php,代码如下: = swoole_server("127.0.0.1",9501->set('worker_num' => 2, true,//是否作为守护进程,玩玩就不要开启这东西了,不然你都不知道跑到哪里去了 ->on('connect','my_onConnect'->on('receive','my_onReceive'->on('close','my_onClose' "swoole_server is running on 127.0.0.1 9501 n"-></span><span style="color: #008000;">//</span><span style="color: #008000;">receive msg respond</span>
<span style="color: #0000ff;">function</span> my_onReceive (<span style="color: #800080;">$serv</span>,<span style="color: #800080;">$fd</span>,<span style="color: #800080;">$from_id</span>,<span style="color: #800080;">$data</span><span style="color: #000000;">) {
</span><span style="color: #008000;">//</span><span style="color: #008000;"> var_dump($serv);</span>
<span style="color: #800080;">$data</span> = <span style="color: #008080;">trim</span>(<span style="color: #800080;">$data</span><span style="color: #000000;">);
</span><span style="color: #008000;">//</span><span style="color: #008000;"> 发送给谁,如:@id msg...,最好的当然是使用redis或者数据库存入号码并生成一个映射了,不过玩玩就不要认真了</span>
<span style="color: #0000ff;">if</span>(<span style="color: #008080;">substr</span>(<span style="color: #800080;">$data</span>,1) == '@'<span style="color: #000000;">){
</span><span style="color: #800080;">$splitStart</span> = <span style="color: #008080;">strpos</span>(<span style="color: #800080;">$data</span>,' '<span style="color: #000000;">);
</span><span style="color: #800080;">$toUserId</span> = <span style="color: #008080;">substr</span>(<span style="color: #800080;">$data</span>,1,<span style="color: #800080;">$splitStart</span> - 1<span style="color: #000000;">);
</span><span style="color: #0000ff;">echo</span> 'Send to:' . <span style="color: #800080;">$toUserId</span> . ';'<span style="color: #000000;">;
</span><span style="color: #800080;">$content</span> = <span style="color: #008080;">substr</span>(<span style="color: #800080;">$data</span>,<span style="color: #800080;">$splitStart</span> + 1<span style="color: #000000;">);
</span><span style="color: #0000ff;">if</span>(<span style="color: #008080;">is_numeric</span>(<span style="color: #800080;">$toUserId</span><span style="color: #000000;">)){
</span><span style="color: #800080;">$serv</span>->send(<span style="color: #800080;">$toUserId</span>,"From Client[<span style="color: #800080;">$fd</span>@<span style="color: #800080;">$from_id</span>]:" . <span style="color: #800080;">$content</span><span style="color: #000000;">);
}</span><span style="color: #0000ff;">elseif</span>(<span style="color: #008080;">strtolower</span>(<span style="color: #800080;">$toUserId</span>) == 'all'<span style="color: #000000;">){
broadcast(</span><span style="color: #800080;">$serv</span>,<span style="color: #800080;">$content</span><span style="color: #000000;">);
}</span><span style="color: #0000ff;">else</span><span style="color: #000000;">{
</span><span style="color: #800080;">$serv</span>->send(<span style="color: #800080;">$fd</span>,'Swoole: Unkown to user ' . <span style="color: #008080;">strtolower</span>(<span style="color: #800080;">$toUserId</span>) . ' infomation.'<span style="color: #000000;">);
}
}</span><span style="color: #0000ff;">else</span><span style="color: #000000;">{
</span><span style="color: #0000ff;">echo</span> "From Client[<span style="color: #800080;">$fd</span>@<span style="color: #800080;">$from_id</span>],received data: " . <span style="color: #800080;">$data</span> . <span style="color: #ff00ff;">PHP_EOL</span><span style="color: #000000;">;
</span><span style="color: #800080;">$serv</span>->send(<span style="color: #800080;">$fd</span>,'Swoole: '.<span style="color: #800080;">$data</span><span style="color: #000000;">);
}
</span><span style="color: #008000;">//</span><span style="color: #008000;"> $serv->close($fd);</span>
(编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |