这里是我的代码(websocket php使用rachet和wamp服务器!
public function onClose(ConnectionInterface $conn) {
$conn->send("Close client");
}
我将使用$conn->send()为所有客户端发送消息,但我不知道如何在客户端上使用autobahnJS获得此消息?
我找到了解决这个问题的方法!
1)启用autobahnJS的调试模式
ab.debug( true, true );
2)使用conn._websocket从服务器获取每个消息响应。
conn._websocket.onmessage = function (e){
data = JSON.parse(e.data);
console.log(data[1]);
if(data.cat=='serverEvents'){
switch(data.action) {
case 'updateServerinfo':
jQuery.updateServerinfo(data.actionData);
break;
}
}
};
谢谢。
autobahnJS有自己的方式来处理客户端向服务器发出的请求。您正在尝试从服务器向所有客户端发送请求("关闭所有客户端"请求)。要做到这一点,最好的方法是使用JS的setInterval()函数,让一个线程每X秒轮询服务器的事件。例如:
setInterval(checkForUpdate, 60 * 1000);
and
function checkForContentUpdate(timetableId) {
var serviceUrl = 'http://yourscripttocheckhere';
var xhr = $.ajax({url: serviceUrl, cache: false, success: function(content) {
// Check server reply and act accordingly
}});
}
使用AutobahnJS,您有两种与服务器端交互的方式:RPC和PubSub。如果你想从服务器向所有客户端发送消息,只需在所有客户端订阅某个主题X,然后从服务器向X发布消息。
披露:我是Autobahn的原作者,为Tavendo工作。