准备工作:
使用VMware软件安装Centos7 安装php7 和swoole扩展
<?php
//搭建websocket服务器
$ws=new swoole_websocket_server("0.0.0.0",9504);
/**
* $ws 服务器信息
* $request 客户端信息
*/
$ws->on("open",function ($ws,$request){
echo "开始建立连接\n";
// $ws->push($request->fd,"终于等到你");
});
/**
* 当接收信息的时候
* $ws 服务器信息
* $request 客户段信息
*/
$ws->on("message",function ($ws,$request){
echo "message:".$request->data."\n";
$result=file_get_contents("http://i.itpk.cn/api.php?question=".$request->data);
$ws->push($request->fd,$result);
});
//关闭连接
$ws->on("close",function ($ws,$request){
echo "关闭连接\n";
});
//启动服务器
$ws->start();
启动Webscoket服务
php Webscoket.php
查看服务是否启动
php -ajft
前端界面
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>websocket</title>
</head>
<body>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<div id="sse">
<input type="text" id="text"/>
<button onclick="WebSocketTest()">发送</button>
<div id="answer">
</div>
</div>
</body>
</html>
<script type="text/javascript">
function WebSocketTest()
{
if ("WebSocket" in window)
{
// 打开一个 web socket
var ws = new WebSocket("ws://192.168.80.128:9504/");
ws.onopen = function()
{
// Web Socket 已连接上,使用 send() 方法发送数据
$text=$("#text").val();
ws.send($text);
};
ws.onmessage = function (evt)
{
var received_msg = evt.data;
var html="<div>"+received_msg+"</div>";
$("#answer").append(html);
};
ws.onclose = function()
{
// 关闭 websocket
alert("连接已关闭...");
};
}
else
{
// 浏览器不支持 WebSocket
alert("您的浏览器不支持 WebSocket!");
}
}
</script>
实现效果: