只是想知道realm
AutobahnJS 的神秘领域是什么.从文档中,创建连接如下:
var connection = new autobahn.Connection({
url: 'ws://127.0.0.1:9000/',
realm: 'realm1'
});
Run Code Online (Sandbox Code Playgroud)
我没有设置领域服务器端,那么这个领域参数是什么?此外,它是必需的字段,必须意味着连接工作是必要的.有人可以启发我们吗?
我正在遵循github代码中的基本wamp pubsub示例:
此示例从类中发布消息:
class Component(ApplicationSession):
"""
An application component that publishes an event every second.
"""
def __init__(self, realm = "realm1"):
ApplicationSession.__init__(self)
self._realm = realm
def onConnect(self):
self.join(self._realm)
@inlineCallbacks
def onJoin(self, details):
counter = 0
while True:
self.publish('com.myapp.topic1', counter)
counter += 1
yield sleep(1)
Run Code Online (Sandbox Code Playgroud)
我想创建一个引用,以便我可以从代码中的其他地方通过此连接发布消息,即 myobject.myconnection.publish('com.myapp.topic1', 'My message')
从这个类似的问题来看,答案似乎是在连接时,我需要设置类似的东西self.factory.myconnection = self
.我已经尝试了多次这种排列而没有成功.
出厂设置部分如下:
## create a WAMP application session factory
##
from autobahn.twisted.wamp import ApplicationSessionFactory
session_factory = ApplicationSessionFactory()
## .. and set the session class …
Run Code Online (Sandbox Code Playgroud) 我正在开发一个Web应用程序,我需要以下场景的实时行为,
应用程序将有两种类型的用户Player
和Spectator
.玩家可以加入正在进行的游戏,而观众只能观看比赛.
游戏将由管理员用户初始化.
观众基本上可以看到加入游戏的人员名单.当然,当玩家断开连接或新玩家加入游戏观众时,这需要是实时意义的.
总而言之,请考虑以下示例
Spectator_1 joins Clan_101
Spectator_2 joins Clan_201
Player_1 joins Clan_101 // Need to broadcast this event to Spectator_1
Player_2 joins Clan_101 // Need to broadcast this event to Spectator_1
Player_1 disconnects Clan_101 // // Need to broadcast this event to Spectator_1
Player_11 joins Clan_201 // Need to broadcast this event to Spectator_2
Player_12 joins Clan_201 // // Need to broadcast this event to Spectator_2
Run Code Online (Sandbox Code Playgroud)
考虑到正在进行的游戏作为主题/频道(Ratchet\Wamp\Topic
),我需要向观众播放以下事件player …
我正在使用高速公路运行websocket服务器来补充我的Django应用程序.有时,我需要将消息从Django发送到websocket服务器,使用websocket-client模块可以正常工作.我很乐意使用WAMP协议,因为RPC/PubSub API看起来很棒,但python客户端代码是作为一个扭曲的协议实现的,我无法弄清楚如何使用它,即函数调用,而不是来自一些外国事件循环.有什么我在文档中没有看到的,或者我的架构应该有所不同?
我喜欢crossbar.io以及它是如何工作的(个人).但我想知道如何使用Autobahn(Crossbar.io)为典型的动态聊天应用程序设置架构.
这里的动态聊天意味着为每个网址创建了单独的聊天室.
例如:http://www.myapplication.com/chat?roomId=123
,创建一个订阅主题"com.myapp.chat123"的聊天室.
http://www.myapplication.com/chat?roomId=456
,创建一个订阅主题"com.myapp.chat456"的聊天室.
我们需要将聊天消息存储在数据库中以供将来参考,因为高速公路没有消息持久性.
现在我的问题是:
如果每个聊天室使用单独的主题,那么我们如何订阅服务器中的消息(因为我们现在无法使用模式订阅)?
由于我们将为每个房间使用单独的主题,我们如何在Crossbar.io中进行身份验证和授权?
我无法找到用于设置此处提到的功能的Javascript文档.哪里可以找到它?
在这个SO答案中,有人提到crossbar.io为会话加入或离开路由器提供元事件.有没有办法知道用户何时订阅或取消订阅特定主题而不是路由器加入或离开?
您能解释一下如何使用当前版本的Crossbar.io(在Javascript,浏览器或Node.js中)配置可用的高级配置文件功能吗?
你能详细解释一下事件历史功能吗?以及如何配置它?
我需要从php脚本发布消息,我可以发布单个消息.但现在我需要在循环中发布不同的消息,找不到正确的方法如何做,这是我尝试的:
$counter = 0;
$closure = function (\Thruway\ClientSession $session) use ($connection, &$counter) {
//$counter will be always 5
$session->publish('com.example.hello', ['Hello, world from PHP!!! '.$counter], [], ["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";
}
);
};
while($counter<5){
$connection->on('open', $closure);
$counter++;
}
$connection->open();
Run Code Online (Sandbox Code Playgroud)
在这里,我想向订阅者发布$ counter值,但值总是5,1.我有一种方法可以在循环之前打开连接然后在循环中发布消息2.如何从$ session-> publish()访问循环?
谢谢!
我想连接到Poloniex的Push API.在他们的页面上,他们写下以下内容
要使用推送API,请连接到wss://api.poloniex.com并订阅所需的订阅源.
wss = WebSocket安全 - > SSL保护
他们还举例说明了Node.js和Autobahn | JS:
var autobahn = require('autobahn');
var wsuri = "wss://api.poloniex.com";
var connection = new autobahn.Connection({
url: wsuri,
realm: "realm1"
});
connection.onopen = function (session) {
function marketEvent (args,kwargs) {
console.log(args);
}
function tickerEvent (args,kwargs) {
console.log(args);
}
function trollboxEvent (args,kwargs) {
console.log(args);
}
session.subscribe('BTC_XMR', marketEvent);
session.subscribe('ticker', tickerEvent);
session.subscribe('trollbox', trollboxEvent);
}
connection.onclose = function () {
console.log("Websocket connection closed");
}
connection.open();
Run Code Online (Sandbox Code Playgroud)
但是,我不想使用JavaScript,而是使用C++.还有一个用于C++的Autobahn-Library,叫做Autobahn | CPP.我已经安装了它并尝试运行他们的订阅者示例代码 …
我尝试使用python连接到poloniex中的Push API,并按照答案中的说明操作:
如何使用python库连接到poloniex.com websocket api
但是我一直收到这个错误:
2017-06-25T04:07:04断开与peer tcp的连接:104.20.13.48:443 with abort = True:WebSocket打开握手超时(对等没有及时完成打开握手)
谁知道这里发生了什么?我无法从在线文档中找到它.谢谢!
我正在尝试构建通知消息系统.我使用SimpleWsServer.php服务器示例.我想在服务器上完成任务时将通知推送到用户的浏览器.这需要使用PHP完成,我无法找到显示它的教程.当PHP服务器作为管理器运行时,所有教程似乎都显示了发送和接收的tavendo/AutobahnJS脚本.
是否可以使用php脚本向订阅者发送消息?
我没有为我的问题找到任何解决方案.我需要创建一个带有两个线程的python应用程序,每个线程使用autobahn库连接到WAMP路由器.
跟着我写下我的实验代码:
wampAddress = 'ws://172.17.3.139:8181/ws'
wampRealm = 's4t'
from threading import Thread
from autobahn.twisted.wamp import ApplicationRunner
from autobahn.twisted.wamp import ApplicationSession
from twisted.internet.defer import inlineCallbacks
class AutobahnMRS(ApplicationSession):
@inlineCallbacks
def onJoin(self, details):
print("Sessio attached [Connect to WAMP Router]")
def onMessage(*args):
print args
try:
yield self.subscribe(onMessage, 'test')
print ("Subscribed to topic: test")
except Exception as e:
print("Exception:" +e)
class AutobahnIM(ApplicationSession):
@inlineCallbacks
def onJoin(self, details):
print("Sessio attached [Connect to WAMP Router]")
try:
yield self.publish('test','YOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO')
print ("Subscribed to topic: test")
except Exception as e:
print("Exception:" …
Run Code Online (Sandbox Code Playgroud) wamp-protocol ×10
autobahn ×8
php ×3
python ×3
twisted ×3
javascript ×2
thruway ×2
api ×1
autobahnws ×1
c++ ×1
crossbar ×1
phpwebsocket ×1
poloniex ×1
ratchet ×1
websocket ×1
zeromq ×1