0

这是我的代码(使用 rachet 和 wamp 服务器的 websocket php!

public function onClose(ConnectionInterface $conn) {
  $conn->send("Close client");
}

我将使用 $conn->send() 为所有客户端发送消息,但我不知道如何在客户端上使用 autobahnJS 获取此消息?

更新 我找到了解决这个问题的方法!

1) 在 autobahnJS 中启用调试模式

ab.debug( true, true );

2)使用 conn._websocket.onmessage 从服务器获取每个消息响应。

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;
            }
        }
    };

谢谢大家。

4

2 回答 2

0

使用 AutobahnJS,您有两种与服务器端交互的方式:RPC 和 PubSub。如果要从服务器向所有客户端发送消息,只需在所有客户端中订阅某个主题 X 并从服务器发布到 X。

披露:我是 Autobahn 的原作者,为 Tavendo 工作。

于 2013-05-21T21:05:55.910 回答
0

autobahnJS 有自己的方式来处理客户端向服务器发出的请求。您正在尝试从服务器向所有客户端发送请求(“关闭所有客户端”请求)。最好的方法是使用 JS 的 setInterval() 函数让线程每隔 X 秒轮询一次服务器以获取事件。例如:

setInterval(checkForUpdate, 60 * 1000);

在 checkForUpdate() 中:

function checkForContentUpdate(timetableId) {
    var serviceUrl = 'http://yourscripttocheckhere';

    var xhr = $.ajax({url: serviceUrl, cache: false, success: function(content) {
      // Check server reply and act accordingly
    }});
}
于 2013-05-21T14:06:39.960 回答