使用WebSockets在Java和C#桌面应用程序之间进行通信?

时间:2014-01-02 19:50:27

标签: c# java websocket signalr xsockets.net

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

我正在关注的WebSocket支持的库是XSockets.NetSignalR

我无法在Java中找到使用XSockets.Net(不要与XSocket.org混淆)的任何内容。据我所知,XSockets面向MS .Net框架和Mono环境。然而,看看SignalR,还有SignalA,这是一个基于Java的适用于Android的SignalR客户端。

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

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

所以问题是:我怎样才能得到C#& Java桌面客户端是否可以通过WebSockets在Web上进行通信,而不是使用SignalR和XSockets.Net?

非常感谢任何帮助!

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

2 个答案:

答案 0 :(得分:3)

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

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

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

如果您决定编写自己的Java实现,我们将以任何方式帮助您。

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

答案 1 :(得分:-1)

以我的拙见,你误解了一些事情。

XSockets和SignalR是完全面向特定平台 .NET 的库。它们都包含WebSockets的功能,这是一个平台无关的标准,以方便其使用。 这并不意味着您可以在所有平台中使用XSocket或SignalR库

我认为为XSockets或SignalR创建一个java客户端将是一种过度杀伤,并会导致您严重依赖第三方库。在您的情况下,我会继续在我的服务器端使用 WebSockets 。然后我将使用一个库来处理每个客户端的WebSockets标准,这对于每个客户端开发平台可能是不同的。因此,您将依赖于一个通用标准,并且您将最小化对第三方库的依赖性。

希望我帮忙!