首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用php和voryx Thruway WAMP消息系统发送消息

用php和voryx Thruway WAMP消息系统发送消息
EN

Stack Overflow用户
提问于 2014-10-01 06:23:25
回答 1查看 2.6K关注 0票数 3

我正在尝试构建一个通知消息传递系统。我正在使用SimpleWsServer.php服务器示例。当任务在服务器上完成时,我想将通知推送给用户的浏览器。这需要用PHP来完成,我找不到一个教程来展示它。所有教程似乎都显示了tavendo/AutobahnJS脚本,以便在PHP服务器作为管理器运行时发送和接收。

是否可以使用php脚本向订阅者发送消息?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-02 00:13:11

阿童木

这实际上是相当直截了当的,可以通过几种不同的方式实现。我们设计了Thruway客户机来模仿AutobahnJS客户机,所以大多数简单的示例都会直接翻译。

我假设您希望从一个网站(而不是一个运行时间较长的php脚本)发布。

在您的PHP网站中,您可能希望这样做:

代码语言:javascript
复制
$connection = new \Thruway\Connection(
    [
        "realm"   => 'com.example.astro',
        "url"     => 'ws://demo.thruway.ws:9090', //You can use this demo server or replace it with your router's IP
    ]
);

$connection->on('open', function (\Thruway\ClientSession $session) use ($connection) {

    //publish an event
    $session->publish('com.example.hello', ['Hello, world from PHP!!!'], [], ["acknowledge" => true])->then(
        function () use ($connection) {
            $connection->close(); //You must close the connection or this will hang
            echo "Publish Acknowledged!\n";
        },
        function ($error) {
            // publish failed
            echo "Publish Error {$error}\n";
        }
    );
  });

 $connection->open();

而javascript客户机(使用AutobahnJS)如下所示:

代码语言:javascript
复制
var connection = new autobahn.Connection({
    url: 'ws://demo.thruway.ws:9090',  //You can use this demo server or replace it with your router's IP
    realm: 'com.example.astro'
});

connection.onopen = function (session) {

    //subscribe to a topic
    function onevent(args) {
        console.log("Someone published this to 'com.example.hello': ", args);    
    }

    session.subscribe('com.example.hello', onevent).then(
        function (subscription) {
            console.log("subscription info", subscription);
        },
        function (error) {
           console.log("subscription error", error);
        }
    );
};

connection.open();

我还为javascript端创建了一个柱塞,为PHP创建了一个可运行

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26135281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档