您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
swoole学习笔记-案例
发布时间:2018-04-30 11:17:03编辑:雪饮阅读()
实现一个im即时聊天案例
创建websocket服务器端脚本
<?php
//im通信案例-服务器端代码
//创建websocket服务器
$ws=new swoole_websocket_server("0.0.0.0",9502);
//on 函数 opne message close
//open情况
$ws->on('open',function ($ws,$request){
echo "新用户 $request->fd 加入。\n";
//设置用户id
$GLOBALS['fd'][$request->fd]['id']=$request->fd;
//设置用户名
$GLOBALS['fd'][$request->fd]['name']='匿名用户';
});
//message
$ws->on('message',function($ws,$request){
$msg=$GLOBALS['fd'][$request->fd]['name'].":".$request->data."\n";
//用户设置昵称
//查询用户请求的数据中若有包含"#name#"
if(strstr($request->data,"#name#")){
//将请求内容中"#name#"替换为空,则就剩下用户名自身了。
$GLOBALS['fd'][$request->fd]['name']=str_replace("#name#",'',$request->data);
}
//若不是设置用户名,则就是发送消息
else{
//发送给每一个客户端
foreach ($GLOBALS['fd'] as $i){
if($i['id'] != $request->fd){
$ws->push($i['id'],$msg);
}
}
}
});
//close
$ws->on('close',function($ws,$request){
echo "客户端-{$request} 断开连接\n";
//清除当前客户端连接
unset($GLOBALS['fd'][$request]);
});
$ws->start();
创建webscoket客户端脚本
<!DOCTYPE html>
<html lang="en">
<style>
input{width:100%;}
</style>
<script type="text/javascript">
window.addEventListener('load',function(){
var wsServer="ws://192.168.43.248:9502";
var webSocket=new WebSocket(wsServer);
webSocket.onopen=function (ev) {
alert("im连接成功");
}
webSocket.onclose=function (ev) {
alert("im连接中断");
}
webSocket.onmessage=function (evt) {
alert(evt.data);
}
webSocket.onerror=function (evt,e) {
alert("发生错误");
}
var sendButton=document.getElementsByTagName("input")[0];
var setNikeNameButton=document.getElementsByTagName("input")[1];
//发送消息
sendButton.addEventListener('click',function(){
var content=document.getElementsByTagName("textarea")[0].value;
webSocket.send(content);
alert("发送成功");
},0);
//设置昵称
setNikeNameButton.addEventListener('click',function(){
var content=document.getElementsByTagName("textarea")[0].value;
var content=content+"#name#";
document.getElementsByTagName("textarea")[0].value=content;
webSocket.send(content);
},0)
},0);
</script>
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<center>
<div><textarea rows="20" cols="50">朝朝暮暮漫漫人生路</textarea></div>
<div><input type="button" value="发送消息" /></div>
<div><input type="button" value="设置昵称" /></div>
</center>
</body>
</html>
关键字词:swoole,案例
下一篇:swoole学习笔记-附件