带有 Android 的 WebSockets:URL 在哪里?

Posted

技术标签:

【中文标题】带有 Android 的 WebSockets:URL 在哪里?【英文标题】:WebSockets with Android: where's the URL? 【发布时间】:2013-10-26 15:32:17 【问题描述】:

我目前正在开发一款适用于 android 的聊天应用,我知道它需要一个中间服务器作为客户端之间的联系点。我也知道 XMPP 是一个久经考验的解决方案,但是我主要是 C# 开发人员,我想把时间花在 WebSockets 上,因为从我读到的内容来看,我相信它既 fast轻量级,虽然它需要某种形式的握手。

所以现在我已经下载了WebSocket4Net(这是来自SuperWebSocket 的一个分支?)。我能够创建一个带有各种本地 URL 的 WebSocket 对象,并且我知道 Autobahn 是适用于 Android 的可行 WebSockets 客户端库。然而,我不明白的是,我将如何让我的 Android 客户端连接到 Web 服务器(没有 LAN 连接,而是通过 Internet)。

现在我认为一个可能的解决方案是公开一个 WCF 端点,然后它可以很好地与WebSocket 配合使用,但这又会增加往返时间,首先破坏了 WebSockets 实现的目的。 ..(轻量级!)我还不如只使用 WCF 服务作为联系点。

然后我的问题是:我的 Android 客户端将与之交互的 URL 是什么?

【问题讨论】:

【参考方案1】:

马特,

    创建一个 C# 控制台应用程序,使用 WebSocket4Net 监听特定端口(例如 8000)。

    然后将此应用程序部署到分配有静态 IP 或域名(例如 example.com)的服务器上。

    现在在 android 应用程序中,您使用 Autobahn 连接到此 ip 或域地址。即网址将是 ws://example.com:8000

我希望这就是你要找的。​​p>

【讨论】:

嗯。所以在我的应用程序服务器上,我用这条线this.webSocket = new WebSocket("ws://localhost:13370/"); 启动WebSocket?但我似乎无法从我的客户(或websocket.org/echo.html,事实上)连接... 你的服务器 IP 地址是什么?它是一个静态 IP,因此互联网上的任何人都可以访问它。【参考方案2】:

我的错,WebSocket4Net 不是 SuperWebSocket 的一个分支,而是一个 WebSocket 客户端,所以它与我所寻找的完全不同。无论如何感谢@VinZ 的回答,我期待得到这个问题的解决方案:Alchemy Websockets: Can't host server on Azure。

这真的很麻烦,因为我的 Websocket 服务器在本地工作,但不在 Azure 上!

【讨论】:

以上是关于带有 Android 的 WebSockets:URL 在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

PostgreSQL 通知和带有 Rails 的 WebSockets

带有 websockets 连接的井字游戏

带有 C# 实现的 ASP.NET HTML5 WebSockets

带有 Node.js 和 socket.io 的 WebSockets

docker上带有javascript和nginx的websockets

带有cordova的Websockets在ipad上不起作用