Coder Social home page Coder Social logo

walkor / web-msg-sender Goto Github PK

View Code? Open in Web Editor NEW
920.0 73.0 405.0 884 KB

Web message pusher written in PHP based on workerman.

Home Page: http://www.workerman.net/web-sender

License: MIT License

PHP 99.74% Batchfile 0.26%
workerman websocket realtime-messaging

web-msg-sender's Introduction

web-msg-sender

Web消息实时推送,支持在线用户数实时统计。基于PHPSocket.IO开发,使用websocket推送数据,当浏览器不支持websocket时自动切换comet推送数据。

效果截图

web-msg-sender-demo

线上demo

接收消息页面:http://www.workerman.net:2123/
后端推送接口url:http://www.workerman.net:2121/?type=publish&to=&content=msgcontent
to为接收消息的uid,如果不传递则向所有人推送消息
content 为消息内容

注:可以通过php或者其它语言的curl功能实现后台推送

下载安装

1、git clone https://github.com/walkor/web-msg-sender

2、composer install

后端服务启动停止

Linux系统

启动服务

php start.php start -d

停止服务

php start.php stop

服务状态

php start.php status

windows系统

双击start_for_win.bat

如果启动不成功请参考 Workerman手册 配置环境

前端代码类似:

// 引入前端文件
<script src='//cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
<script>
// 初始化io对象
var socket = io('http://'+document.domain+':2120');
// uid 可以为网站用户的uid,作为例子这里用session_id代替
var uid = '<?php echo session_id();?>';
// 当socket连接后发送登录请求
socket.on('connect', function(){socket.emit('login', uid);});
// 当服务端推送来消息时触发,这里简单的aler出来,用户可做成自己的展示效果
socket.on('new_msg', function(msg){alert(msg);});
</script>

后端调用api向任意用户推送数据

<?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);

常见问题:

如果通信不成功检查防火墙
/sbin/iptables -I INPUT -p tcp --dport 2120 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 2121 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 2123 -j ACCEPT

workerman相关参见 www.workerman.net

workerman更多有趣的应用:

小蝌蚪聊天室

多人在线flappy birds

其它

web-msg-sender's People

Contributors

trylife avatar walkor avatar youngphp avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

web-msg-sender's Issues

workerman运行一段时间后会自动关闭,cron定时重启无效

我的workerman是单独运行的,但是机器上同时有nginx的php服务,
不知是否是干扰问题,每运行十几个小时候会自动关闭。
我在cron里加了定时重启,但是后台定时重启无效,每次我手动去重启才恢复正常

image

以上是cron的log,难道这样加错了吗?还是这样根本无效

posix_setsid 错误

Fatal error: Call to undefined function Workerman\posix_setsid() in /d/fawpi/app/web-msg-sender/vendor/workerman/workerman/Worker.php on line 695

性能问题

1,这个性能怎么样
2,怎么做压力测试

window可以运行,linux不行

是用的window mount 到linux做的开发,window 按照 提示去执行 bat 文件可以执行。而linux 上运行 php start.php start -d 报了一堆的错。。是不是两个操作系统 用的 文件是不一样的。

请问web-msg-sender怎么使用自定义的array?

// 全局数组保存uid在线数据
$uidConnectionMap = array();
$live_agent_arr=array(); //自定义了个函数,在 $socket->on( 'login', function ( $uid )use( $socket ) 引用是null的,不解

echo "is_arraya-".is_array($live_agent_arr)." is_nulla-".is_null($live_agent_arr)." is_stringa-".is_string($live_agent_arr)."\n\n";

// PHPSocketIO服务
$sender_io = new SocketIO( 2120 );
// 客户端发起连接事件时,设置连接socket的各种事件回调
$sender_io->on( 'connection', function ( $socket ) {
// 当客户端发来登录事件时触发

$socket->on( 'login', function ( $uid )use( $socket ) {
    global $uidConnectionMap,$last_online_count,$last_online_page_count,$live_agent_arr;
    // 已经登录过了
    
    if ( isset( $socket->uid ) ) {
        return;
    }
    // 更新对应uid的在线数据
    $uid = ( string )$uid;
    if ( !isset( $uidConnectionMap[ $uid ] ) ) {
        $uidConnectionMap[ $uid ] = 0;
    }
    
    echo "is_arrayb-".is_array($uidConnectionMap)." is_nullb-".is_null($uidConnectionMap)." is_stringb-".is_string($uidConnectionMap)."\n\n"; //执行结果 is_array($uidConnectionMap) 可以 true
    echo "is_array-".is_array($live_agent_arr)." is_null-".is_null($live_agent_arr)." is_string-".is_string($live_agent_arr)."\n\n";  //执行结果 is_array($live_agent_arr) 是flase, is_null($live_agent_arr)=true

    // 这个uid有++$uidConnectionMap[$uid]个socket连接
    ++$uidConnectionMap[ $uid ];
   
    if(isset($live_agent_arr)){
        array_push( $live_agent_arr, array( "exten" => $uid, "channel" => "" ) );
    }
    // 将这个连接加入到uid分组,方便针对uid推送数据
    $socket->join( $uid );
    $socket->uid = $uid;

} );

} );

我十分不理解的是,为何 我自己定义的

$live_agent_arr 在 function ($uid) use($socket) 是 null, 而例子里自带的$uidConntionMap可以正常使用? 我该怎么样使用自己定义的array?

请各位大神不吝赐教,小白跪谢!!!

discuss

这个框架对于前端就是引入socket.io.js,两行代码就实现消息推送系统,另外浏览器兼容性如何?长连接推送(websocket或者comet这个主要是scoket.io做的兼容?

socket.io-clientpp无法完成链接

使用socket.io-clientpp开发的客户端,在与服务进行http链接后,等待ws链接时显示超时;
用js的client没问题。java,c++的都有问题。但连socket.io的服务器正常。

2121发送可以,2123查看不了,2120也接收不了

web-msg-sender,可以启动,2123页面打不开,尝试发送,可以成功发送,接收不了
mac下没问题,传到ubuntu就有问题
/sbin/iptables -I INPUT -p tcp --dport 2120 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 2121 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 2123 -j ACCEPT
防火墙这三个命令也输入进去了
help!

composer install 报错

No composer.lock file present. Updating dependencies to latest instead of installing from lock file. See https://getcomposer.org/install for more information.
Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages.

Problem 1
- Root composer.json requires workerman/phpsocket.io, it could not be found in any version, there may be a typo in the package name.

Potential causes:

Read https://getcomposer.org/doc/articles/troubleshooting.md for further common problems. 怎么解决呢

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.