江湖聊天室php,workerman+thinkphp制作简易聊天室

1:环境在window下面的,thinkphp3.2

2:下载GatewayWork,放到

83da9a0085c03be69e0266820808257a.png

目录下

3:然后双击打开

311a5a608f4fab3e756efeb0dddb4565.png

这个文件开启服务

4:所有的逻辑均在

b3473618f5cff97fa057b868e85544f3.png

Events.php这个文件里面

5:当用户连接到服务器时,触发

98d6bded0d9230c586dbddb23a175b4f.png

,初始化,发送client_id

6:收到消息时,

92ec04ef5c2fc9f9f749def5a03895f6.png

出发了这个方法,message,就是客户端发送过来的数据

7:附上代码

/**

* 当客户端发来消息时触发

* @param int $client_id 连接id

* @param mixed $message 具体消息

*/

public static function onMessage($client_id, $message)

{

//1:收到消息之后转成array()

$data = json_decode($message,true);

if(!$data){

return;

}

//2:判断类型,bind是client_id与用户id绑定

//say 发送消息的事件

switch ($data['type']) {

//绑定

case 'bind':

$from_id = $data['from_id'];

//把获取的到用户id与client_id进行绑定

Gateway::bindUid($client_id,$from_id);

return;

//发送文字消息

case 'say':

//获取到客户端传过来的信息

$text = $data['data'];

$from_id = $data['from_id'];

$to_id = $data['to_id'];

//封装消息

$info = array(

'type'=>'text',

'data'=>$text,

'from_id'=>$from_id,

'to_id'=>$to_id,

'time'=>date('Y-m-d h:i:s',time())

);

Gateway::sendToUid($to_id,json_encode($info));

return;

//发送图片

case 'img':

$from_id = $data['from_id'];

$to_id = $data['to_id'];

$img = $data['img'];

//封装消息

$info = array(

'type'=>'img',

'data'=>$img,

'from_id'=>$from_id,

'to_id'=>$to_id,

'time'=>date('Y-m-d h:i:s',time())

);

Gateway::sendToUid($to_id,json_encode($info));

return;

}

//推送给指定的uid

// 向所有人发送

// Gateway::sendToAll(json_encode($info));

}

可以简单的实现点对点的消息互通。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值