php关键词回复源码,php基于socket的关键词回复

基于[https://my.oschina.net/u/3470006/blog/4791421]的内容,可以做个稍微有趣的功能,比如关键词回复

为了不过于污染服务端的socket代码,新建message_handler.php,写上

function message_handler($Message,$Client){

}

在server.php引入此文件,并将[把接收的消息回发给客户端]下面一行的代码更改为

message_handler($Message,$Client);

然后在新建message_handler.php定义一个关键词回复数组常量

const KEYWORD_REPLY=['你好'=>'你好,你可以直接输入消息来获得回答','你是谁'=>'我是关键词回复器'];

再定义一个无法处理的默认回复常量

const KEYWORD_REPLY_UNKNOWN='无法理解你的问题';

修改message_handler函数

$Reply=isset(KEYWORD_REPLY[$Message])?KEYWORD_REPLY[$Message]:KEYWORD_REPLY_UNKNOWN;

socket_write($Client,$Reply.PHP_EOL);

这样就实现了关键词回复,这时候为了直观对客户端的代码进行修改,修改成计时聊天显示你我那样,于是修改while代码块里面的部分

if($Message===''){

//要禁止空消息,否则会卡住

echo '[系统消息]你不能发送空消息'.PHP_EOL;

}

else{

socket_write($Socket,$Message);

echo '[你]'.date('Y-m-d H:i:s').PHP_EOL.$Message.PHP_EOL;

//发送消息后接收服务端的回复

$Reply=socket_read($Socket, 8192);

echo '[对方]'.date('Y-m-d H:i:s').PHP_EOL.$Reply.PHP_EOL;

}

把上方服务端初始问好消息也改成这种形式

echo '[对方]'.date('Y-m-d H:i:s').PHP_EOL.$Message.PHP_EOL;

这样一个对话形式的关键词回复就实现了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值