1

我有兴趣将服务器作为 C# Web 应用程序部署到 GoDaddy,然后让用 C# 和 Java 开发的桌面客户端能够使用 WebSockets (RFC 6455) 订阅/发布到服务器。

我正在查看的 WebSocket 支持的库是XSockets.NetSignalR

我找不到任何关于在 Java 中使用 XSockets.Net(不要与 XSocket.org 混淆)的信息。我了解 XSockets 针对 MS .Net 框架和 Mono 环境。然而,看看 SignalR,还有 SignalA,它是一个基于 Java 的 Android SignalR 客户端。

大声思考...我知道有许多用于 Java 的 WebSocket 库,这表明如果我能够将消息(使用 WebSocket)从 Java 应用程序发布到服务器,那么我应该能够阅读它并在 C# 中处理它,因为 WebSocket 协议是一个标准。

到目前为止,我相信 SignalR 解决方案将满足我允许 C# 和 Java 应用程序在 Web 上通信的要求,但由于 SignalR 的传输要求,我的通信将不会使用 WebSockets。阅读 SignalR 要求,要激活 WebSockets 传输,我必须使用 Windows8+ 和 .Net Framework for 4.5+。GoDaddy 不使用 Windows8 进行 Windows 托管,即使这样做了,那么我所有的客户也必须使用 Windows8,这不是保证。

所以问题是:我怎样才能让 C# 和 Java 桌面客户端通过 WebSockets 在网络上交谈,而不是使用 SignalR 和 XSockets.Net?

很感谢任何形式的帮助!

编辑:我现在将研究部署 C# XSockets.NET 服务器并拥有 C# XSockets.NET 客户端和 Java JWebSocket 客户端,因为 JWebSockets 和 XSockets 都支持 WebSocket RFC6455 协议。如果这是一个成功的努力,我将在这里发布我的发现并关闭这个问题。

4

2 回答 2

3

您可以用任何语言实现 RFC6455 客户端并使用 XSockets。但是请注意,XSockets 使用发布/订阅模式,您也必须实现该模式才能利用该平台。

好处是您实际上不必实现 RFC6455,因为您可以实现自定义(非 websocket 协议)并在从桌面(或其他任何东西)通信时使用它。由于 XSockets 中的所有内容都是一个插件,因此您可以添加自定义协议并仍然与客户端通信 RFC6455,因为 XSockets 将提供跨协议通信。

因此,您必须实现的实际上只是 java 客户端中的发布/订阅功能。今天可能没有任何 Java 客户端实现 IXSocketClient 接口,在涉及多平台支持时,我们专注于 Mono 而不是 Java。

如果您决定编写自己的 java 实现,我们将尽我们所能帮助您。

注意:从下一个版本(不远)开始,实现您的自定义协议并从任何使用 TCP/IP 的设备连接将非常容易

于 2014-01-03T04:41:33.907 回答
-1

在我看来,你误解了一些事情。

XSockets 和 SignalR 是完全面向特定平台.NET的库。它们都封装了WebSockets的功能,这是一个独立于平台的标准,以简化其使用。无论如何,这并不意味着您可以在所有平台上使用 XSocket 或 SignalR 库

我想为 XSockets 或 SignalR 创建一个 java 客户端会是一种矫枉过正,并且会导致您严重依赖 3rd 方库。在您的情况下,我将继续在我的服务器端直接使用WebSockets 。然后我会为每个客户端使用一个处理 WebSockets 标准的库,每个客户端开发平台可能会有所不同。因此,您将依赖于一个通用标准,并且您将最大限度地减少对 3rd 方库的依赖。

希望我有所帮助!

于 2014-01-03T06:51:31.867 回答