因需求要做站内信并且是实时消息推送的,考虑到ajax轮询太耗费资源(故使用websocket服务器做此功能
使用wokerman官方出的一款专门做消息推送的sdk web-msg-sender 贴上官方地址 https://www.workerman.net/web-sender
官方默认监听端口为2020(可自行更改)
官方默认推送端口为2021(可自行更改)
实现思路:
因为我用的yii框架
1:引入基于wokerman的消息推送sdk
2:将sdk兼容到框架 yii
3:开启服务
实现过程
1:引入composer
composer 引入源码包
"kriss/yii2-web-msg-sender": "*"
2:兼容框架
配置 在web.php
或main-local.php
<?php
使用kriss \ webMsgSender \ WebMsgSender ;
return [
'components' => [
//其他
WebMsgSender :: COMPONENT_NAME => [
'class' => WebMsgSender :: class,
//配置请参阅WebMsgSender公共属性
// //更改类似
//'socketPort'=> 2123
],
],
];
不要忘记打开服务器上的端口,系统上的socketIO客户端的默认端口为2120,PushApi的默认端口为2121。2120必须为客户端连接打开,2121必须为当前系统(或其他系统)打开以卷曲以推送消息。
配置 console/config
<?php
return [
'controllerMap' => [
'web-msg-sender-service' => [
'class' => \ kriss \ webMsgSender \ ServiceController :: class,
],
],
];
3:开启服务
php yii web-msg-sender-service/start
4.发送消息
<?php
use kriss\webMsgSender\WebMsgSender;
use yii\helpers\Html;
WebMsgSender::getComponent()->getSender()->sendInfo('You Have A Message,' . Html::a('[clickMe]', 'http://www.baidu.com'));