workerman+vue+php简单聊天

php部分:

<?php
use Workerman\Worker;
//use Workerman\Autoloader;
require_once __DIR__ . '\Workerman\Autoloader.php';

// 创建一个Worker监听2345端口,使用http协议通讯

$worker = new Worker("websocket://0.0.0.0:2727");

// 启动4个进程对外提供服务
$worker->count = 1;

$uid = 0;

//当客户端连上来时
$worker->onConnect = function($connection){
  global $ws_worker,  $uid;
  //为这个链接分配一个uid
    $connection->uid = ++$uid;
};
//当客户端发送消息过来时,转发给所有人
$worker->onMessage = function($connection, $data)
{
    global $worker;
    foreach($worker->connections as $conn) {
        $conn->send("user_{$connection->uid} said: $data");
    }

};

//当客户端断开时,广播给所有客户端
$worker->onClose = function ($connection){
    global $worker;
    foreach($worker->connections as $conn) {
        $conn->send("user_{$connection->uid} logout");
    }
};

// 运行worker
Worker::runAll();

html部分:

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>aaaaa</title>
</head>
<body>
<div id="app">
    <ul>
        <li v-for="message in messages">{{message}}</li>
    </ul>
    <form @submit.prevent="onSubmit">
        <input type="text" v-model="content">
        <input type="submit">
    </form>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<script>

        var ws = new WebSocket("ws://127.0.0.1:2727");

        var app = new Vue({
            el:"#app",
            data:{
                messages:[],
                content:''
            },
            created:function(){
                ws.onmessage = function(e){
                    this.messages.push(e.data);
                }.bind(this);
            },
            methods:{
                onSubmit:function(){
                    ws.send(this.content);
                }
            }
        })

</script>
</body>
</html>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值