swoole WebSocket 服务器

<?php
class Ws{
    const HOST = '0.0.0.0';	// 监听的IP地址, 0.0.0.0 表示监听所有IP地址
    const PROT = '9504';

    public $ws = null;	// 存放websocket连接资源
    // websocket 继承自 http 服务,所以 http 提供的所有 API 和配置项都可以使用,
    // websocket 同样支持静态文件的访问。
    public $config = [
    	// 进程数
		'worker_num' => 2,
		// 开启静态文件请求
        'enable_static_handler' => true,
        // 配置静态文件根目录
        'document_root' => '/www/wwwroot/swoole_gyy/data',
	];
	
    public function __construct()
    {
    	// 创建 websocket server对象
        $this->ws = new swoole\websocket\server(self::HOST, self::PROT);
		// 设置参数
        $this->ws->set($this->config);
		// 监听websocket连接事件
        $this->ws->on('open', [$this, 'onOpen']);
        // 监听websocket消息事件
        $this->ws->on('message', [$this, 'onMessage']);
        // 监听websocket连接关闭事件
        $this->ws->on('close', [$this, 'onClose']);
		// 启动服务
        $this->ws->start();
    }

    /**
     * 监听websocket连接事件
     * @param $ws
     * @param $request
     */
    public function onOpen($ws, $request)
    {
        echo '已与客户端建立连接 - '. $request->fd. PHP_EOL;
    }

    /**
     * 监听websocket消息事件
     * @param $ws
     * @param $frame
     */
    public function onMessage($ws, $frame)
    {
        echo '客户端消息:'. $frame->data. PHP_EOL;
        // 发送消息给客户端
        $ws->push($frame->fd, '这是服务端的消息:'. date('Y-m-d H:i:s'));
    }

    /**
     * 监听websocket连接关闭事件
     * @param $ws
     * @param $fd
     */
    public function onClose($ws, $fd)
    {
        echo '退出了:'. $fd. PHP_EOL;
    }
}
new Ws();

注:WebSocket\Server 继承自 Http\Server,所以 Http\Server 提供的所有 API 和配置项都可以使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值