第一步:下載tp3.2.3寡键、GatewayWorker、GatewayClient未辆;
解壓后把tp和Gatewayworker放在同一個(gè)目錄下面(根目錄下面)燃辖;
第二步:將GatewayClient中的Gateway.php重命名為Gateway.class.php;
修改其內(nèi)容如下:
1.namespace Org\Util踏烙;
2.第35行的$registerAddress的端口號(hào)修改和GatewayWorker/Application/YourApp/下的三個(gè)start_文件里面的“服務(wù)注冊(cè)地址”下端口號(hào)一致师骗;
保存后將該文件放于tp框架的ThinkPHP/Library/Org/Util文件夾下;
第三步:將GatewayWorker中start_gateway.php的第24行Gateway括號(hào)內(nèi)容修改為(“websocket://后面的不變”);
Events.php的第40行修改為Gateway::sendToClient($client_id,json_encode(array('client_id'=>$client_id)));可注釋第42行代碼讨惩;
第四步:運(yùn)行tp入口文件后辟癌,控制器Index.class.php文件內(nèi)容如下:
<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
// public $uid = 2;
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));
//發(fā)給對(duì)方
$gateway->sendToUid($data['from_uid'], json_encode($data));
//發(fā)給自己
echo json_encode($data);
}
}
視圖文件index.html文件內(nèi)容為:(其他文件自己建,不貼了)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>chatroom</title>
<script type="text/javascript" src="http://cdn.bootcss.com/jquery/3.1.1/jquery.min.js"></script>
<script type="text/javascript">
// 打開一個(gè) web socket
var ws = new WebSocket("ws://127.0.0.1:8282");
ws.onopen = function() {};
ws.onmessage = function(evt) {
var received_msg = evt.data;
console.log(received_msg);
// alert("數(shù)據(jù)已接收..." + received_msg);
var jmsg = JSON.parse(received_msg);
if (jmsg.from_uid > 0) {
var t_msg = '<li>' + jmsg.from_uid + ' 說(shuō):' + jmsg.msg + '</li>';
$("#message").append(t_msg);
}
if (jmsg.client_id.length != 0) {
$.post("{:U('Index/bind')}", {
client_id: jmsg.client_id
},
function(data) {
console.log(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">發(fā)送</button>
</div>
<script>
$(function() {
$("#send").click(function() {
var uid = $('input[name="uid"]').val();
var msg = $('input[name="msg"]').val();
$.post("{:U('Index/message')}", {
uid: uid,
msg: msg
},
function(data) {
$('input[name="msg"]').val('');
});
});
});
</script>
</body>
</html>
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者