1

我已经在主机上创建了 Kaazing VPN 设置,并将 VM 作为来宾机器,并参考 http://kaazingcorp.cachefly.net/com/file/kaazing-vpc.pdf URL & 还建议我使用perl 也是如此。但是现在我想使用一些 javascript 将消息发送到客户端的 kaazing 网关,并希望看到该消息传送到配置了 ActiveMQ 的另一端。但是,当我向某个队列发送一条消息并创建生产者时。然后发现旅行路径直到客户端的 Kaazing & MQ。谁能告诉我解决方案。

客户端的网关详细信息。

<service>
    <name>proxy-connection</name>
    <accept>tcp://172.19.xx.xx:50505/</accept>
    <type>proxy</type>
    <properties>
        <connect>
            ws://192.168.yy.yy:8010/
        </connect>
    </properties>
</service>
<service-defaults>
<accept-options>
        <http.bind>8000</http.bind>
        <ws.bind>8010</ws.bind>
    </accept-options>
</service-defaults>

服务器端的网关详细信息

<service>
    <name>proxy-connection</name>
    <accept>ws://192.168.yy.yy:8010/</accept>
    <type>proxy</type>
    <properties>
        <connect>
            tcp://10.a.b.c:50505/
        </connect>
    </properties>
</service>
<service-defaults>
<accept-options>
        <http.bind>8000</http.bind>
        <ws.bind>8010</ws.bind>
    </accept-options>  

而对于发送消息,刚刚创建了通过 JMS 连接工厂连接的小型 java 脚本客户端,并在发送前与生产者和消费者创建了一个主题。但是,在另一端没有收到任何消息,但所有消息都显示在客户端的 MQ 下。请建议。

4

2 回答 2

0

10/8172.16/12并且192.168/16都是私有IP地址范围。我猜您需要外部 IP 地址才能将消息发送到另一端。

如果这是它应该看起来的样子:

client <--tcp--> gateway <---ws/internet---> gateway <--tcp--> server

然后tcp连接是本地的(私有IP很好)但ws连接需要使用公共IP。

下面是一个私有IP地址:

ws://192.168.yy.yy:8010/

所有连接都不会离开您的客户端。这不能是您服务器的 IP 地址...除非您的服务器也在同一个本地网络上。

相关漫画:http: //xkcd.com/742/

于 2014-11-07T07:25:46.520 回答
0

如果您只想通过 WebSocket 代理任何 TCP 流量,您的网关配置看起来有语法错误。对于客户端,您的服务定义应为:

<service>
  <name>proxy-connection</name>
  <accept>tcp://172.19.xx.xx:50505/</accept>
  <connect>ws://192.168.yy.yy:8010/proxy</connect>
  <type>proxy</type>
</service>

并且服务器网关应为:

<service>
  <name>proxy-connection</name>
  <accept>ws://192.168.yy.yy:8010/proxy</accept>
  <connect>tcp://10.a.b.c:50505/</connect>
  <type>proxy</type>
</service>

但正如其他人所说,客户端网关必须能够到达 192.168.yy.yy:8010。然后,您的客户端程序将连接到 172.19.xx.xx:50505 的套接字,并且 TCP 流将在侦听 10.abc:50505 的服务器上重播。我假设您有一个 ActiveMQ 代理在 10.abc:50505 上侦听套接字,并且有一些 ActiveMQ 客户端连接到它认为在 172.19.xx.xx:50505 运行的代理。正如其他人所指出的,您确实希望客户端连接引用可公开访问的 IP 或主机名,并且服务器端的接受 URL 以匹配来自客户端的连接地址。

您使用什么客户端语言通过 Web 连接到 ActiveMQ?您可能想查看 Kaazing 的 JMS 版本,它使用 JMS API 将 ActiveMQ(或任何 JMS 代理)直接扩展到许多客户端(Java、JavaScript、.Net/Silverlight、Objective-C、Dalvik、Flash/Flex)。这允许您直接在客户端程序中通过 Web 使用 JMS API,而无需运行第二个网关。

我在 Kaazing 工作,所以如果您需要更多帮助或有更多问题得到解答,请告诉我。

于 2014-11-18T03:06:08.583 回答