我正在使用Ratchet和Autobahn.js。我想在訂閱上進行一些用戶驗證,所以我需要將會話密鑰傳遞給Ratchet WAMP服務器。你能告訴我如何在訂閱事件中將一些數據傳遞給服務器?Autobahn.js - 如何傳遞訂閱數據
0
A
回答
1
我想你可以做一個身份驗證,然後再繼續訂閱。
高速公路實施了與WAMP RPC的認證握手。
檢查會話驗證部分: http://autobahn.ws/js/reference/#Session_authreq
然而,救護車還沒有實施的WAMP CRA協議,但。 大約一年前他們爲此創建了一張票。
該票中的某人已經分叉棘輪並自行實施。
但是,如果您可以將服務器切換到Autobahn Python,它可能會更容易,因爲它已經支持WAMP CRA。
3
我假設你不是在談論身份驗證,並且你已經建立了與服務器的連接。
有沒有必要從客戶端傳遞會話ID,WAMP照顧你。訂閱時唯一可以傳遞的信息是主題。
在PHP方面,您可以訪問會話ID,您可以使用它進行驗證。
public function onSubscribe(ConnectionInterface $conn, $topic)
{
$sessionId = $conn->WAMP->sessionId
}
替代解決方案:如果你真的必須從客戶端傳遞會話ID,那麼你可以做這樣的事情:
的Javascript:
var appSession = null;
ab.connect(
// The WebSocket URI of the WAMP server
wsuri,
// The onconnect handler
function (session) {
appSession = session;
}
);
appSession.call('myValidationChannelForUser', appSession.sessionid(), 'otherValidationParams').then(function(result)
{
if (result.success)
{
console.log('you have been subscribed to xyz..');
}
}
PHP:
public function onCall(ConnectionInterface $conn, $id, $fn, array $params)
{
$sessionId = $conn->WAMP->sessionId;
if ($fn == 'myValidationChannelForUser')
{
// validation...
// $params[0] == appSession.sessionid() passed from JS
// $params[1] == otherValidationParams passed from JS
// validation passed, subcribe to channel
if (validated)
{
$this->onSubscribe(ConnectionInterface $conn, $topic);
return $conn->callResult($id, array('success' => 1);
}
}
}
相關問題
- 1. 通過模板傳遞訂閱數據
- 2. 在Meteor中傳遞參數。訂閱
- 3. Python - 如何在Pinax Stripe訂閱中傳遞數量?
- 4. 在2組件之間傳遞數據的可觀察/訂閱
- 5. 如何取消訂閱AngularFire數據庫觀察/訂閱?
- 6. 如何將Meteor訂閱數據傳遞到使用ES6的React組件道具
- 7. 未在WLPush上傳遞的WLPushOptions訂閱
- 8. SSRS訂閱 - 預定義傳遞
- 9. 如何更新我的訂閱數據?
- 10. 如何閱讀傳遞的參數
- 11. 如何將變量引用傳遞給Observable訂閱
- 12. Firebase雲消息傳遞如何取消訂閱主題
- 13. 如何將設備信息傳遞給SSRS訂閱?
- 14. WooCommerce將訂單數據傳遞到woocommerce_checkout_update_user_meta
- 15. 在SSRS中的數據驅動訂閱中傳遞多值參數
- 16. 如何取消訂閱socket.io訂閱?
- 17. 如何取消訂閱Weak訂閱MvvmCross
- 18. 如何取消訂閱NServiceBus訂閱?
- 19. 使用PayPal訂閱按鈕傳遞訂閱PayPal的開始日期?
- 20. 多天訂閱API數據?
- 21. 訂閱SQL查詢數據
- 22. NServiceBus:如何使用數據庫訂閱存儲配置訂戶
- 23. C#傳遞參數 - 動態事件訂閱
- 24. 條紋訂閱api中的傳遞標頭參數
- 25. Woocommerce訂閱掛鉤參數僅傳遞用戶標識
- 26. 訂閱作爲方法參數傳遞的代理
- 27. netTiers如何傳遞數據?
- 28. 如何確定RSS訂閱訂閱者數量
- 29. WCF服務:傳遞令牌來驗證訂閱並獲取數據庫信息
- 30. 訂閱大型集合是否將所有數據傳遞給客戶端?
抱歉,我只能在答案中有一個鏈接,這裏是[ticket](https://github.com/cboden/Ratchet/issues/63)和[Autobahn | Python](http://autobahn.ws /蟒/參考/) – oldlam