第二步:將GatewayClient中的Gateway.php重命名為Gateway.class.php;修改其內容如下:1.namespace Org\Util;2.第35行的$registerAddress的端口號修改和GatewayWorker/Application/YourApp/下的三個start_文件裏面的“服務註冊地址”下端口號壹致;保存後將該文件放於tp框架的ThinkPHP/Library/Org/Util文件夾下;
第三步:將GatewayWorker中start_gateway.php的第24行Gateway括號內容修改為(“websocket://後面的不變”);Events.php的第40行修改為Gateway::sendToClient($client_id,json_encode(array('client_id'=>$client_id)));可註釋第42行代碼;
第四步:運行tp入口文件後,控制器Index.class.php文件內容如下:
<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
public function index() {
$this->uid = I('uid');
session('uid', $this->uid);
$this->display();
}
function bind() {
$uid = session('uid');
$client_id = I('client_id');
$gateway = new \Org\Util\Gateway();
$gateway->bindUid($client_id, $uid);
$message = '綁定成功' . $uid . '-' . $client_id;
$gateway->sendToUid($uid, $message);
}
function message() {
$to_uid = I('uid');
$message = I('msg');
$gateway = new \Org\Util\Gateway();
$data['msg'] = $message;
$data['from_uid'] = session('uid');
$data['to_uid'] = $to_uid;
$gateway->sendToUid($to_uid, json_encode($data)); //發給對方
$gateway->sendToUid($data['from_uid'], json_encode($data)); //發給自己
echo json_encode($data);
}
}
視圖文件index.html文件內容為:(其他文件自己建)
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>chatroom</title>
<script type="text/javascript" src="/jquery/3.1.1/jquery.min.js"/></script>
<script type="text/javascript">
// 打開壹個 web socket
var ws = new WebSocket("ws://127.0.0.8:8282");
ws.onopen = function ()
{
};
ws.onmessage = function (evt)
{
var received_msg = evt.data;
alert("數據已接收..." + received_msg);
var jmsg = JSON.parse(received_msg);
if (jmsg.from_uid > 0) {
var t_msg = '<li>' + jmsg.from_uid + ' 說:' + jmsg.msg + '</li>';
$("#message").append(t_msg);
}
if (jmsg.client_id.length != 0) {
$.post("{:U('bind')}", {client_id: jmsg.client_id}, function (data) {
});
}
}
</script>
</head>
<body>
<ul id="message">
</ul>
<div>
<input name="uid" value="1" >
<input name="msg" value="" size="50">
<button type="button" id="send" >發送</button>
</div>
<script>
$(function () {
$("#send").click(function () {
var uid = $('input[name="uid"]').val();
var msg = $('input[name="msg"]').val();
$.post("{:U('message')}", {uid: uid, msg: msg}, function (data) {
$('input[name="msg"]').val('');
});
});
});
</script>
</body>
</html>
第五步:打開GatewayWorker文件下的.bat文件,去瀏覽器中訪問妳設置的虛擬路由地址即可。
作者: 子期不遇
鏈接:/article/17962?block_id=tuijian_wz
來源:慕課網
本文原創發布於慕課網 ,轉載請註明出處,謝謝合作!