yii2扩展 基于swoole的websocket开发直播间demo案例

Yii2 WebSocket

即时通讯Demo

前提

服务器安装swoole

git clone https://github.com/swoole/swo...

cd swoole-src

phpize

./configure --enable-openssl -with-php-config=[PATH] #注意[PATH]为你的php地址 开启ssl用

make && make install

安装

composer执行

composer require "jianyan74/yii2-websocket"

或者在 composer.json 加入

"jianyan74/yii2-websocket": "^1.0"

配置

在 common/config/main.php 加入以下配置

'redis' => [

'class' => 'yii\redis\Connection',

'hostname' => 'localhost',

'port' => 6379,

'database' => 0,

],

在 console/config/main.php 加入以下配置。(注意:配置在controllerMap里面)

// webSocket

'websocket' => [

//'class' => 'jianyan\websocket\console\WebSocketController',

'class' => 'console\controllers\WebSocketController',

'server' => 'jianyan\websocket\server\WebSocketServer', // 可替换为自己的业务类继承该类即可

'host' => '0.0.0.0',// 监听地址

'port' => 9501,// 监听端口

'type' => 'ws', // 默认为ws连接,可修改为wss

'config' => [// 标准的swoole配置项都可以再此加入

'daemonize' => false,// 守护进程执行

'task_worker_num' => 4,//task进程的数量

// 'ssl_cert_file' => '',

// 'ssl_key_file' => '',

'pid_file' => __DIR__ . '/../../backend/runtime/logs/server.pid',

'log_file' => __DIR__ . '/../../backend/runtime/logs/swoole.log',

'log_level' => 0,

],

],

使用

# 启动

php ./yii websocket/start

# 停止

php ./yii websocket/stop

# 重启

php ./yii websocket/restart

测试

接口文档

发送消息的格式全部以json字符串发过来

心跳

请求地址

ws://[to/you/url]:9501

参数

参数名 说明

type pong

无返回

进入房间

请求地址

ws://[to/you/url]:9501

参数

参数名 说明

type login

room_id 房间id

user_id 用户id

nickname 用户昵称

head_portrait 用户头像

返回(1)

{

  "type":"login",

  "from_client_id":2,

  "to_client_id":"all",

  "time":"2018-04-10 16:41:29",

  "count":"1",

  "member":{

    "fd":2,

    "room_id":10001,

    "user_id":1,

    "nickname":"隔壁老王",

    "head_portrait":"123"

  }

}

返回(2)

当前登录的人还会返回一个在线列表

{

  "type":"list",

  "from_client_id":2,

  "to_client_id":2,

  "time":"2018-04-10 16:41:29",

  "list":[{

  "fd":2,

  "room_id":10001,

  "user_id":1,

  "nickname":"隔壁老王",

  "head_portrait":"123"

}]

}

发言

请求地址

ws://[to/you/url]:9501

参数

参数名 说明

type say

to_client_id 对谁说话:默认 all

content 内容

返回

{

  "type":"say",

  "from_client_id":2,

  "to_client_id":"all",

  "time":"2018-04-10 16:43:00",

  "content":"123"

}

送礼物

请求地址

ws://[to/you/url]:9501

参数

参数名 说明

type gift

gift_id 礼物id

返回

{

"type": "gift",

"from_client_id": 4,

"to_client_id": "all",

"gift_id": "礼物id",

"time": "2018-03-06 11:27:15"

}

离开房间

请求地址

ws://[to/you/url]:9501

参数

参数名 说明

type leave

返回

{

"type": "leave",

"from_client_id": 1,

"to_client_id": "all",

"count": 2,

"time": "2018-03-06 11:27:15"

}

你可能感兴趣的:(yii2,websocket)