Better Late Than Never.

利用swoole的websocket实现对当前网站打开页面数的实时统计

  具体效果类似于本站下方的页面统计(基于workman的socket.io)
   
  一直想试下用swoole的websocket实现一下基于workman实现的对页面打开数量统计的功能,终于花了点时间看了下swoole的文档了。之前看了几个laravel-swoole的轮子,不过工作上也没用上,后面就差不多给忘了。。。
  其实主要搞清楚websocket的几个事件就好了(open/message/close),前端参考 html5-websocket,后台参考 swoole-websocket

前端代码

<span id="see">一共打开 <b id="count">1</b> 个页面</span>
</body>
<script type="text/javascript">
    // 打开一个 web socket
    let ws = new WebSocket("ws://127.0.0.1:9501");
    ws.onopen = function (evt) {
        // Web Socket 已连接上,使用 send() 方法发送数据
        ws.send("发送数据");
        console.log("Web Socket 已连接上,使用 send() 方法发送数据");
    };

    ws.onmessage = function (evt) {
        let received_msg = evt.data;
        document.getElementById('count').innerHTML = received_msg;
        console.log("数据已接收..." + received_msg);
    };
</script>

后台部分代码

public function run()
{
    $this->server->on('open', [$this, 'open']);

    $this->server->on('message', [$this, 'message']);

    $this->server->on('close', [$this, 'close']);

    $this->server->start();
}

  具体可查看在码云上的DEMO 码云

-- END

写的不错,赞助一下主机费

扫一扫,用支付宝赞赏
扫一扫,用微信赞赏

暂无评论~~