【问题标题】:.NET WebSocket Client Control.NET WebSocket 客户端控件
【发布时间】:2014-07-13 08:13:43
【问题描述】:

我正在尝试使用 VB.NET 编写一个非常简单的 WebSocket 客户端,但找不到现成的 webSocket 控件。

有一个控件完全符合我的要求:来自 nSoftware 的IP*Works! WS,但不幸的是,他们为此收取了一笔巨款。

这是他们提供的演示应用的屏幕截图:

问题:有没有人知道类似的免费/低预算 .NET 控件可以做同样的事情

注意:我已经用 VB.NET 测试了这个演示应用程序,它可以完美地连接到:ws://echo.websocket.org

编辑:另外,我仍然有兴趣听取XOJO/RealBasicXamarinLiveCode 用户的意见,以了解实际适用于该服务器的类似解决方案 -> ws://echo.websocket.org

【问题讨论】:

  • 我可以使用 LiveCode 打开一个到 echo.websocket.org 的套接字,但我不知道要发送什么来获得响应。如果您提供有关该协议的更多信息,我应该能够为您提供完整的答案。
  • 作为协议的一个例子,我打开了一个到 echo.websocket.org 的套接字,这似乎可以工作。如果我打开一个到 echo.websocket.org:4444 的套接字,我会超时。这意味着我可以连接。如果我将“helo”&crlf 写入套接字,我没有得到任何响应。我需要知道使用哪个端口以及使用什么命令与服务器握手。
  • 同样的事情发生在我身上。好的,它是端口 80,他们在他们的网站上提供了所有套接字规范的详细信息。您可以下载此客户端示例(检查源代码以获取端口号)filedropper.com/ws
  • 我真正需要的是可以发送到服务器的命令列表。除非你能准确告诉我在哪里可以找到这个命令列表,否则我不会下载任何东西。

标签: .net vb.net xamarin realbasic xojo


【解决方案1】:

您自己使用 RealStudio 进行的测试和我使用 LiveCode 进行的测试(到目前为止)都不起作用,因为每个请求都需要发送标头。客户端与服务端握手需要发送的headers是

    GET /chat HTTP/1.1
    Host: server.example.com
    Upgrade: websocket
    Connection: Upgrade
    Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
    Origin: http://example.com
    Sec-WebSocket-Protocol: chat, superchat
    Sec-WebSocket-Version: 13

或许,您可以在 LiveCode 中设置 httpHeaders 并使用简单的 put/get URL 命令与服务器通信。我会试试这个,稍后会编辑我的答案。

另一种 LiveCode 解决方案是设置 revBrowser 控件的 html,并使用 revBrowserExecuteScript() 函数从 LiveCode 脚本调用 JavaScript 函数。

【讨论】:

  • 我怀疑完全一样。非常感谢使用 XOJO 发送 httpHeader 的解决方案,但使用 LiveCode 也可以。非常感谢您抽出宝贵时间。谢谢 x999++
  • 无论如何,在找到解决方案之前,我仍将继续努力/谷歌搜索/阅读
  • 对于 Xojo,HTTPSocket.SetRequestHeader 允许您指定标头。不过,我不知道这是否有助于解决您的 WebSocket 问题。
  • 我在 LiveCode 中试过这个,@PaulLefebvre,但似乎还不够。
  • @Paulo Lefebvre in Xojo 我对 Dim headers As New InternetHeaders 和 headers.SetHeader("Upgrade:", "websocket") ... 的做法有所不同。我可以建立连接并从服务器获取 101 标头,但连接在几秒钟后断开:(
【解决方案2】:

好的,经过几天的努力,我想通了:

  • 有了VB.NET,整个过程中有很多库和信息可用,并且有一些现成可用的控件。 Nsoftware 有一个很好的但是太贵了。免费控件不是那么好,而且大多数都已过时(旧规格)。最好的办法是手动编写规范,但现有的演示、文档和库非常有用。

  • 使用XOJO 没有像准备好的控件这样的东西,所以我不得不使用 TCP 套接字控件并手动实现规范。多亏了社区,它现在可以正常工作了,因为它的帮助文章是垃圾。

  • 我没有花太多时间在LiveCode 中进行测试,但我相信问题是一样的。由于没有现成可用的控件,至少据我所知,我可能不得不像在 Xojo 中那样在 Live Code 中手动编写规范。

基本上,虽然不容易,但我猜任何编程语言都有可能。

【讨论】:

  • 哪些帮助文章是垃圾? websockets 协议规范?
猜你喜欢
  • 1970-01-01
  • 2016-02-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-16
相关资源
最近更新 更多