问题标签 [websocket-sharp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
387 浏览

c# - Websocket服务器没有从客户端获取所有消息

使用 .net 控制台应用程序,我创建了一个 websocket 服务器。和一个单独的客户端应用程序。

我已经使用这个网页来创建服务器端代码(https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_server)。所以我的主要功能是这样的:

我的客户端控制台应用程序使用 Websocket-Sharp 库 ( https://github.com/sta/websocket-sharp/ )。它的主要逻辑是:

客户端成功发送了 1000 条消息中的每一条,但在服务器端,它并没有收到所有消息。消息中有巨大的空白(即它们没有乱序,消息丢失)。

有谁知道为什么会发生这种情况?为什么消息会消失?

0 投票
1 回答
1371 浏览

c# - websocket-sharp-customheaders 发送标头

我已经为我的 WebSocket 应用程序安装了 nuget 包websocket-sharp-customheaders,并希望在 http-header-information 中发送 sessionId。客户代码:

在 SendNotification 中设置了标头。但是服务器没有收到标头信息。

服务器套接字行为:

有人可以告诉我如何正确发送标头信息吗?

0 投票
1 回答
283 浏览

websocket - WebSocketSharp 与 BinanceAPI

我与 binanceApi 建立了连接,但我遇到了断开连接的问题,API 断开连接,我不知道原因,我想保持连接处于活动状态,直到我有订单。我会发布我的代码,也许有人可以帮助我。

我已经在 localhost 上创建了另外两个带有 websocketsharp 的项目来测试并且所有断开连接都正常触发。

https://pastebin.com/edit/2Mbh1X4p

0 投票
1 回答
2961 浏览

node.js - 通过 uWebSockets.js 和 Websocket-Sharp 使用 websocket 压缩

我们有一个使用 websocket 进行连接的手机游戏。服务器是使用uWebSockets.js库的 Node.js 应用程序,客户端是使用Websocket-Sharp库的 Unity 应用程序。他们俩一起玩得很好,我们没有遇到他们的问题。

最近我们想启用websocket 压缩。两个库都表示它们支持 Per-message Compression 扩展,但似乎有一些与它们不兼容的东西。因为当我们配置为使用压缩时,websocket 连接会在握手时立即关闭。

我们还使用ws库测试了客户端,它提供了具有相同结果的压缩示例。我们尝试修改 ws 压缩选项,发现当我们评论 serverMaxWindowBits 选项(默认为协商值)时,可以建立连接并且发送和接收消息没有问题。我们还询问了如何控制 uWebsockets 中的 serverMaxWindowBits。

我们尝试的最后一件事是连接一个最小的 uWS 服务器和 websocket-sharp 客户端。这是服务器的代码:

这是客户端代码:

当我们运行服务器和客户端时,客户端发出以下错误:

错误|WebSocket.checkHandshakeResponse|服务器尚未发回“server_no_context_takeover”。致命|WebSocket.doHandshake|包含无效的 Sec-WebSocket-Extensions 标头。

似乎客户端期望 server_no_context_takeover 标头并且没有收到。我们查看了uWebsockets源代码(uWebsockets.js 模块的 C++ 部分),并发现了一个用于发送回 server_no_context_takeover 标头的注释条件。于是我们取消了条件的注释,构建了uWebsockets.js,再次测试在客户端遇到如下错误:

WebSocketSharp.WebSocketException:无法从流中读取帧的标头。

有什么建议可以让这两个库一起工作吗?

0 投票
0 回答
2704 浏览

c# - C# WebSockets-Sharp WebSocketSharpException:“无法从流中读取帧头”

我有一个可视化 C# 应用程序,它通过 WebSocket 连接到使用 Heroku 部署的远程 Node.js 服务器。

服务器使用 npm WebSocket 模块“ws”来创建一个 WebSocket-Server。

C# 客户端应用程序使用此 GitHub 存储库中的 WebSocketSharp 库:https ://github.com/sta/websocket-sharp创建连接到服务器的 WebSocket-Client。

这是必要的节点服务器 server.js 代码:

这是节点服务器 ApiHandler.js 代码

这是必要的 C# 客户端应用程序代码

所以它的工作原理是,当客户端更新服务器上的信息时,它会将更新的信息发送到服务器,然后服务器将更新的信息发送给除发送者之外的所有客户端。

当客户端从服务器接收到更新的信息时,它们会更新其本地副本以匹配从服务器接收到的数据。

问题是在客户端通过 WebSocket 连接到服务器大约一分钟后,客户端抛出 WebSocketException 并显示消息“无法从流中读取帧的标头”。

快速的谷歌搜索将我带到这个 GitHub 问题https://github.com/sta/websocket-sharp/issues/202。从上述链接:

“我们通过在 Ext.cs 中修改 ReadBytesAsync(this Stream stream, int length, Action completed, Action error) 设法完全修复它。我们注意到即使没有连接,'NetworkStream.EndRead' 也可以返回零 (0) 字节关闭。仔细阅读“EndRead”的文档只说当连接关闭时返回零字节。其他方式并不总是正确的,接收 0 字节并不总是意味着连接似乎正在关闭。这很常见即使连接没有关闭,也会返回零字节。在 Chrome 中偶尔会发生一次,而在 Firefox 中似乎更常见。因此,将:替换 if (nread == 0 || nread == length) 为: if(nread == length) 修复了问题。它确保当一个人在等待时两个帧字节一个真的得到两个字节。“。

但是在检查 WebSocket-Sharp 库中的代码时,上面引用的修复程序已经应用于库(该帖子来自 2016 年,因此它可能已被路径)。

2020年图书馆的代码:

另一个奇怪的事情是,当我在本地运行服务器并连接到它时,这个问题永远不会发生。只有当我连接到部署在 Heroku 上的远程副本时才会发生这种情况。

0 投票
2 回答
619 浏览

c# - 用c#websocket获取数据

有一个用 ftx 证券交易所的 c# 制作的 websocket 应用程序。它在控制台上运行良好,但使用 WindowsForms,我无法将数据传输到文本框。

有没有办法做到这一点?

https://github.com/ftexchange/FtxApi

0 投票
0 回答
315 浏览

c# - 如何通过 WebSocketSharp 完全发送字节

我正在制作一个音频聊天程序,所以我首先尝试通过网络套接字发送音频字节,我得到音频字节并将其发送但它失败了(可能无法完全通过)我尝试的第二个是转换字节使用 BitConverter 转换为字符串并使用 Encoding.UTF8.GetBytes 方法再次转换为字节数组

这是我的代码

如果我发送那个“音频”它就可以了。我可以转换为字节数组,我可以播放音频。但是,如果我发送 pcmAudio 有一个错误

以上是我的接收音频代码。数据是字符串。无法使用 Byte 类型接收。所以我不得不将数据转换为字节。

不幸的是,它不起作用。

错误消息是“波头已损坏”

我想完整地发送字节数组。

你的问题 1. 你为什么要发送字节?您知道使用 bitconverter 发送音频的方式我的回答 1. 字节长度会大于未转换的

谢谢你

0 投票
1 回答
72 浏览

c# - 如何从在 websocket-sharp C# 中创建 WebSocket 类的新实例的不同代码部分发送消息

这是我在 Stack Overflow 上的第一篇文章,如果我的问题不是很清楚,请见谅。为了添加更多上下文,我想在单击连接按钮时打开与 WebSocket 的连接,并在单击发送按钮时从连接按钮打开的连接发送消息。问题是我无法从发送消息按钮访问我在连接按钮中创建的 ws 变量。下面的代码可能会让您对我想要做什么有更多的了解:

谢谢。

0 投票
1 回答
1085 浏览

c# - 如何使用 websocketsharp 发出类似同步的 websocket 请求?

我正在做 c# 项目。我想以某种同步方式通过 websocketsharp 库发送 API 请求。

我一直在尝试按照以下方式进行操作:

  1. 在我们发送任何 WS 请求之前,我们创建具有唯一 ID 的新 SynchronousRequest() 对象,并将新创建的对象添加到某种等待列表中

  2. 我们在响应中发送 WS 请求,将唯一 ID 添加到有效负载 - 服务器将返回相同的 ID。

  3. 我们开始等待事件发出信号(一旦我们收到响应就会发出信号)

在响应处理程序上:

  1. 一旦 WS 响应到达,我尝试通过唯一 ID 匹配上下文
  2. 一旦匹配成功,我们就发出响应已收到的信号,并将响应负载添加到 synchronousRequest() 对象

问题是第 3 步,一旦我在整个 websocket 客户端挂起的事件上使用 WaitOne() 并且不会收到进一步的响应 - 导致完全死锁。

我怎样才能在单独的线程中进行某种 WaitOne() 调用,或者我的问题可能存在完全更好的解决方案,所以整个客户端不会挂起并且我们匹配上下文?

0 投票
2 回答
1608 浏览

asp.net-core - 在不使用 Asp .net 核心包的情况下为 .net 核心控制台应用程序创建一个 websocket 服务器 olny

我们需要将我们的应用程序迁移到 .Net 核心,并且我们依赖于为 .Net Framework 3.5 构建的 websocket 库。websocket-sharp

到目前为止,我找不到仅使用 .Net Core 而不是 Asp Net core 的 websocket 库实现。

带有 ASP 的库的示例是:

但是我们不会使用 ASP 包来集成 à websocket 实现。谁能帮我找到一个只使用 .Net 核心层而不是 ASP.Net 核心的 websocket 实现?