标签: broadcast

GCP PubSub - 广播消息 - 只有相关订阅者处理消息

我在负载均衡环境中使用 GCP PubSub 作为 Web Sockets 的后端。当前的实现为负载均衡器后面的每个服务器都有一个主题以及最终用户和服务器之间的映射。当我希望向特定用户发送消息时,我使用映射来确定将其发布到哪个主题。

这是可行的,但它有很多移动部件,并且需要在通过缩小规模或推出应用程序的更新版本来删除服务器时清理主题。

我现在正在探索一种更复杂的实现,其中只有一个主题。由于每个服务器都知道其最终用户,理论上我可以向这个单一主题发布消息,并且每个服务器都可以检查该消息,将其与其用户列表进行比较。只有当前具有消息中指定的最终用户的 Web Socket 连接的服务器才会处理它。

这让我想到了我的问题 - 如何使用 PubSub 实现这一目标?

  • 目前我正在使用拉取订阅,我是否需要使用推送订阅?也许这将允许同时交付给所有订阅者?
  • 在 Pull 模型中,如果订阅者没有.ack()消息,可能会允许重新传递消息,但消息可能需要很长时间才能最终发送到适当的订阅者(违背了 Web Sockets 的目的,是“实时”更新) - 这是对其在请求订阅模型中如何工作的公平评估吗?
  • 我是否使用了错误的工具来完成这项工作?这是可能的,但我希望我只需要以不同的方式使用当前的工具

broadcast google-cloud-pubsub

1
推荐指数
1
解决办法
862
查看次数

来自子线程的Android广播

我正在尝试使用广播公司将消息从子线程发送到主UI线程.所以我的活动有一个广播接收器(我讨厌多个),我希望能够从一个单独的子线程(runnable)发送消息.

这是我在子线程中正在做的事情:

Intent broadcastIntent = new Intent();
broadcastIntent.setAction(ResponseReceiver.ACTION_RESP);
broadcastIntent.putExtra("Controller", "connect");
context.sendBroadcast(broadcastIntent);
Run Code Online (Sandbox Code Playgroud)

但问题是我如何定义上下文?它给出了异常"上下文无法解决"如果我不使用它,它将找不到"sendBroadcast"方法.那么怎么做呢?

multithreading android broadcast broadcastreceiver

0
推荐指数
1
解决办法
3455
查看次数

在整个网络上广播自己的IP

我想知道是否有一种更简单的方法可以使用 C 或 C++ 将我自己的 IP 广播到特定端口上网络上的所有设备

我对套接字编程不太了解,只是因为我的大多数应用程序不需要网络。我研究了一下,发现一段代码看起来很有前途,尽管它并没有完全广播,因为它发送到特定的 IP 地址。

有没有一种方法可以一次性广播到 192.168.1.0/255 之间的地址,或者我是否需要遍历这些地址,然后自己向它们发送一个数据包?

编辑:我问的是 C++ 实现,而不是网络基础设施。这就是为什么我链接了上面的链接。

c c++ sockets networking broadcast

0
推荐指数
1
解决办法
1733
查看次数

基于广播变量的pyspark过滤器数据帧

我有一个pyspark 2.0数据框,我试图根据(相对)较短的列表进行过滤-长度可能为50-100。

filterList = ['A','B','C']
Run Code Online (Sandbox Code Playgroud)

我想将该列表广播到我的每个节点,并使用它删除列表中没有两列之一的记录。

此操作有效:

filter_df= df.where((df['Foo'].isin(filterList )) | (df['Bar'].isin(filterList)))
Run Code Online (Sandbox Code Playgroud)

但是当我广播列表时,我得到一个错误:

filterListB= sc.broadcast(filterList)

filter_df= df.where((df['Foo'].isin(filterListB)) | (df['Bar'].isin(filterListB)))

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-99-1b972cf29148> in <module>()
----> 1 filter_df= df.where((df['Foo'].isin(filterListB)) | (df['Bar'].isin(filterListB)))

/usr/local/spark/python/pyspark/sql/column.pyc in isin(self, *cols)
    284         if len(cols) == 1 and isinstance(cols[0], (list, set)):
    285             cols = cols[0]
--> 286         cols = [c._jc if isinstance(c, Column) else _create_column_from_literal(c) for c in cols]
    287         sc = SparkContext._active_spark_context
    288         jc = getattr(self._jc, "isin")(_to_seq(sc, cols))

/usr/local/spark/python/pyspark/sql/column.pyc in _create_column_from_literal(literal)
     33 …
Run Code Online (Sandbox Code Playgroud)

python broadcast pyspark

0
推荐指数
1
解决办法
1136
查看次数

使 UDP 广播与 wifi 路由器配合使用

我想在一个非常简单的网络上测试 UDP 广播:一个根本没有连接到互联网的旧 wifi 路由器(WRT54GS)、一个 Android 平板电脑和我的 MacBook:

[Tablet] <\/\/\/\/\/> [Wifi Router] <\/\/\/\/\/> [Macbook]
Run Code Online (Sandbox Code Playgroud)

其中波浪线表示无线连接。

Macbook 的 IP 地址为 192.168.1.101,平板电脑的 IP 地址为 192.168.1.102。路由器是192.168.1.1。

为了避免太多低级细节,我想使用 netcat 进行测试。我决定使用端口 11011,因为它很容易输入。

作为第一步,我想我应该尝试让 MacBook 上的这项功能恢复正常。在两个终端窗口中,我运行了这些程序

窗口 1:% nc -ul 11011

我首先启动了它,然后:

窗口2:% echo 'foo' | nc -v -u 255.255.255.255 11011

窗口 1 中没有任何显示。窗口 2 中的结果是这样的:

found 0 associations
found 1 connections:
     1: flags=82<CONNECTED,PREFERRED>
    outif (null)
    src 192.168.1.2 port 61985
    dst 255.255.255.255 port 11011
    rank info not available
Run Code Online (Sandbox Code Playgroud)

我相当确定我在这里遗漏了一些明显的东西。熟悉 nc 的人能发现我明显的错误吗?

udp broadcast packet netcat

0
推荐指数
1
解决办法
5209
查看次数

在android中发送sms消息,将在接收器上打开Web浏览器.(在android中)

我想发送短信(文本或数据),接收方将根据我发送给他的具体网址打开网页浏览器.

我需要澄清一点,我不希望接收方在他身边有某种应用程序,它会收听传入短信的广播.我的意图是网页浏览器的Intent将根据我发送的网址打开,没有应用程序监听它,并且没有用户按下url快捷方式,他在文本消息中获取.

我的想法是,一旦收到(或打开)短信息消息,浏览器的意图就会自动打开.

如果这是可能的话,我会在每个答案中给出正确的方向.

谢谢你们.

sms android broadcast android-intent android-pendingintent

-3
推荐指数
1
解决办法
791
查看次数