php实时消息推送功能
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);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端