/**
* 与GatewayWorker建立websocket连接,域名和端口改为你实际的域名端口,
* 其中端口为Gateway端口,即start_gateway.php指定的端口。
* start_gateway.php 中需要指定websocket协议,像这样
* $gateway = new Gateway(websocket://0.0.0.0:7272);
*/
ws = new WebSocket("ws://127.0.0.1:8282");
// 服务端主动推送消息时会触发这里的onmessage
ws.onmessage = function(e){
// json数据转换成js对象
var bindUrl = "{:url('push/BindClientId')}";
var data = e.data;
var type = data.type || '';
switch(type){
// Events.php中返回的init类型的消息,将client_id发给后台进行uid绑定
case 'init':
// 利用jquery发起ajax请求,将client_id发给后端进行uid绑定
$.post(bindUrl, {client_id: data.client_id}, function(data){
}, 'json');
break;
// 当mvc框架调用GatewayClient发消息时直接alert出来
default :
var text = e.data;
var str = '
' +text +'';$('#message_box').append();
// alert(e.data);
}
};
php:
namespace app\index\controller;
use \GatewayWorker\Lib\Gateway;
class Push{
public function helloAction () {
$uid = $_GET['uid'];
session('uid', $uid);
$view = new View;
return $view->fetch();
}
public function BindClientIdAction () {
$client_id = $_POST['client_id'];
// 设置GatewayWorker服务的Register服务ip和端口,请根据实际情况改成实际值
Gateway::$registerAddress = '127.0.0.1:1238';
$bindUid = session('uid');
// 假设用户已经登录,用户uid和群组id在session中
// client_id与uid绑定
Gateway::bindUid($client_id, $bindUid);
// 加入某个群组(可调用多次加入多个群组)
// Gateway::joinGroup($client_id, $group_id);
}
public function AjaxSendMessageAction () {
$message = '你下的订单有误';
// 设置GatewayWorker服务的Register服务ip和端口,请根据实际情况改成实际值
Gateway::$registerAddress = '127.0.0.1:1238';
GateWay::sendToAll($message);
}
}