1、做实时消息推送的方式大概有前端轮询、长连接等方式,前端轮询的话对服务器压力会很大,所以采用长连接的方式
2、安装启动workerman,下载地址https://www.workerman.net/download/web-msg-sender.zip,启动:linux系统cd到到框架目录里运行php start.php start -d
。windows系统进入到框架目录里双击start_for_win.bat文件启动。
3、启动成功后在浏览器输入http://localhost:2123/可以看到一个demo界面
4、再在浏览器地址上输入http://localhost:2121?type=publish&to=1604023861000&content=你在干嘛,向uid为1604023861000发送“你在干嘛”的消息,
前端代码:
<script src=
\'http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js\'
></script>
<script>
// 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip
var
socket = io(
\'http://workerman.net:2120\'
);
// uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数
uid = 123;
// socket连接后以uid登录
socket.
on
(
\'connect\'
, function(){
socket.emit(
\'login\'
, uid);
});
// 后端推送来消息时
socket.
on
(
\'new_msg\'
, function(msg){
console.log(
"收到消息:"
+msg);
});
// 后端推送来在线数据时
socket.
on
(
\'update_online_count\'
, function(online_stat){
console.log(online_stat);
});
</script>
后端代码
<?php // 指明给谁推送,为空表示向所有在线用户推送 $to_uid = ""; // 推送的url地址,使用自己的服务器地址 $push_api_url = "http://workerman.net:2121/"; $post_data = array( "type" => "publish", "content" => "这个是推送的测试数据", "to" => $to_uid, ); $ch = curl_init (); curl_setopt ( $ch, CURLOPT_URL, $push_api_url ); curl_setopt ( $ch, CURLOPT_POST, 1 ); curl_setopt ( $ch, CURLOPT_HEADER, 0 ); curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 ); curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data ); curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:")); $return = curl_exec ( $ch ); curl_close ( $ch ); var_export($return);
