php+swoole实现群聊

22 篇文章 0 订阅
22 篇文章 1 订阅

简介

http://www.ruanyifeng.com/blog/2017/05/websocket.html

服务器端代码

<?php

$server = new swoole_websocket_server("127.0.0.1", 9501);
$server->on('open', function (swoole_websocket_server $server, $request) {  
  echo "连接的id是:{$request->fd}\n";  
});  
$server->on('message', function (swoole_websocket_server $server, $frame) {  
    foreach($server->connections as $key => $fd) {
      $user_message = $frame->data;
      $server->push($fd, $user_message);
    }
}); 
$server->on('close', function ($ser, $fd) {
    echo "client {$fd} closed\n";  
});
$server->start();  

注意需要通过php-cli(俗说命令行方式运行)

这里写图片描述

客户端代码

<!DOCTYPE html>  
<html lang="en">  

<head>  
    <meta charset="utf-8">
    <style>  
        *{  
            margin:0px;  
            padding:0px;  
        }  
    </style>  
</head>  

<body>  
    <div style="margin-left:400px">
        <h3>群聊天室</h3>
        <div style="border:1px solid;width: 600px;height: 300px;">
            <div id="msgArea" style="width:100%;height: 100%;text-align:start;resize: none;font-family: 微软雅黑;font-size: 20px;overflow-y: scroll"></div>
        </div>
        <div style="border:1px solid;width: 600px;height: 100px;">  
            <div style="width:100%;height: 100%;">
                <textarea id="userMsg" style="width:100%;height: 100%;text-align:start;resize: none;font-family: 微软雅黑;font-size: 20px;"></textarea>  
            </div>  
        </div>  
        <div style="border:1px solid;width: 600px;height: 25px;">  
            <button style="float: right;" onclick="sendMsg()">发送</button>  
        </div>  
    </div>  
</body>  

</html>  
<script src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>  
<script>  
    var ws;  
    $(function(){  
        link();  
    })
    function link () {  
        ws = new WebSocket("ws://127.0.0.1:9501");//连接服务器
        ws.onopen = function(event){  
            console.log(event);  
            alert('连接了');  
        };  
        ws.onmessage = function (event) {  
            var date = new Date();
            var msg = "<p>"+date.toLocaleString()+"</p>"+"<p>"+event.data+"</p>";
            $("#msgArea").append(msg);  
        }  
        ws.onclose = function(event){alert("已经与服务器断开连接\r\n当前连接状态:"+this.readyState);};
        ws.onerror = function(event){alert("WebSocket异常!");};  
    }  
    function sendMsg(){  
        var msg = $("#userMsg").val();  
        ws.send(msg);  
    }  
</script>  

运行效果

这里写图片描述

参考地址

https://wiki.swoole.com/wiki/page/1.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值