idutch/crossbarhttpbridge

一个用于通过Crossbar的HTTP-Bridge发布事件和调用远程过程的Laravel库

dev-master 2024-01-25 20:20 UTC

This package is auto-updated.

Last update: 2024-09-25 21:37:52 UTC


README

Laravel的Crossbar HTTP Bridge服务

安装

  1. 运行以下命令
composer require idutch/crossbarhttpbridge
php artisan vendor:publish
  1. 将以下内容添加到您的.env文件中
CROSSBAR_HTTP_BRIDGE_URI=https://your.crossbar.service:443
CROSSBAR_HTTP_BRIDGE_VERIFY_SSL=true or false
CROSSBAR_HTTP_BRIDGE_PUBLISH_PATH=/publish
CROSSBAR_HTTP_BRIDGE_CALL_PATH=/call
  1. 如果您已配置Crossbar服务器仅接受签名请求,则还需将以下内容添加到您的.env文件中
CROSSBAR_HTTP_BRIDGE_PUBLISHER_KEY=your_publisher_key
CROSSBAR_HTTP_BRIDGE_PUBLISHER_SECRET=your_publisher_secret
CROSSBAR_HTTP_BRIDGE_CALLER_KEY=your_caller_key
CROSSBAR_HTTP_BRIDGE_CALLER_SECRET=your_caller_secret

示例

<?php
namespace App\Http\Controllers;

use iDutch\CrossbarHttpBridge\CrossbarHttpBridgeInterface;

class HomeController extends Controller
{

    /**
     * Show the application dashboard.
     * @param CrossbarHttpBridgeInterface $crossbarHttpBridge
     * @return \Illuminate\Http\Response
     */
    public function index(CrossbarHttpBridgeInterface $crossbarHttpBridge)
    {
        //Publish 'Hello world!' to topic.name
        $crossbarHttpBridge->publish('topic.name', [['message' => 'Hello world!']]);
        
        //Get all active subscriptions on topic.name from the server
        $subscription = $crossbarHttpBridge->call('wamp.subscription.lookup', ['topic.name']);
        $clients = [];

        if (!is_null($subscription['args'][0])) {
            $subscribers = $crossbarHttpBridge->call('wamp.subscription.list_subscribers', [$subscription['args'][0]]);
            foreach ($subscribers['args'][0] as $key => $subscriber) {
                $clients[$key] = $crossbarHttpBridge->call('wamp.session.get', [$subscriber])['args'][0];
            }
        }
        return view('home', ['clients' => $clients]);
    }
}