加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

使用带有voryx Thruway WAMP消息系统的php发送消息

发布时间:2020-12-13 21:52:17 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试构建通知消息系统.我正在使用 SimpleWsServer.php服务器示例.我想在服务器上完成任务时将通知推送到用户的浏览器.这需要使用PHP完成,我无法找到显示它的教程.当PHP服务器作为管理器运行时,所有教程似乎都显示了发送和接收的tavendo / AutobahnJS脚
我正在尝试构建通知消息系统.我正在使用 SimpleWsServer.php服务器示例.我想在服务器上完成任务时将通知推送到用户的浏览器.这需要使用PHP完成,我无法找到显示它的教程.当PHP服务器作为管理器运行时,所有教程似乎都显示了发送和接收的tavendo / AutobahnJS脚本.

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

解决方法

天文,

这实际上非常简单,可以通过几种不同的方式完成.我们设计了Thruway客户端来模仿AutobahnJS客户端,因此大多数简单示例都将直接翻译.

我假设你想从一个网站发布(不是一个长期运行的PHP脚本).

在您的PHP网站中,您需要执行以下操作:

$connection = new ThruwayConnection(
    [
        "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 (ThruwayClientSession $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)将如下所示:

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方创建了一个plunker,为PHP方创建了一个runnable.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读