问题标签 [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 投票
1 回答
850 浏览

json - 在 websocket 中解析 JSON

我正在尝试解析从 websocket 接收到的 JSON 字符串,但一直失败。

string value...它只是在到达部分时抛出异常错误。

我正在使用System.Jsonnuget。

0 投票
2 回答
1978 浏览

c# - Websocket 锐利的日志文件输出

我正在为控制台程序使用 Websocket sharp ( https://github.com/sta/websocket-sharp ),如何将控制台上显示的所有调试/跟踪信息输出到文本文件?

例如:

但是这个输出是“WebSocketSharp.Logger”。

我期待这样的事情:

截屏

0 投票
3 回答
10215 浏览

c# - WebSocket 安全连接自签名证书

目标是与安装在用户 PC 上的 C# 应用程序交换信息的 Web 应用程序。客户端应用程序是 websocket 服务器,浏览器是 websocket 客户端。

最后,用户浏览器中的 websocket 客户端是通过 Angular 持久创建的,并且应用程序在 pc 上运行并做一些事情。

使用的 C# 库是WebSocket-Sharp。websocket客户端是普通的javascript。

显然,此连接仅发生在本地,因此客户端连接到 localhost。由于网站是通过 HTTPS 保护的,因此 websocket 也必须得到保护。为此,C# 应用程序在启动时会创建一个证书(实际上只是为了测试目的)。

连接不起作用,因为证书不受信任。客户端的所有服务器检查都被禁用,但连接不会建立。

这是创建服务器的部分

这就是使用 BouncyCastle 创建证书的方式

这种行为是合乎逻辑的,尽管它很奇怪,因为不应该在本地执行证书检查。有没有可能绕过这个问题?我已经考虑过将颁发者证书安装到受信任的证书,但这不是最佳解决方案。

0 投票
2 回答
1984 浏览

c# - Websocket-sharp 在打开 websocket 时不会引发 OnOpen 事件

我正处于编写与 IP 摄像机接口的程序的早期阶段。我昨天写的一些代码有效,但是当我今天早上回到它时却没有。我知道,我可能做了一些事情,但据我所知,当我在离开前单击调试时它起作用了,而当我进来时单击调试时却没有。我什至让我的计算机在 VS 上运行了一夜(我几乎从来没有,从那以后我又重新开始了)所以我可以在我离开它们时和我所有的互联网标签。计算机被锁定了,所以除非某个非常机智的人决定惹我,否则一夜之间什么都没有改变。

我正在使用 websocket-sharp,当我连接到 websocket(这似乎成功发生)时,不会引发 OnOpen 事件。

websocket-sharp 引发事件的位在以下几行中。

它到达 OnOpen.Emit,并且不抛出异常,所以它似乎认为它正在引发事件。事件见下

它似乎没有到达这一行,因为当我在那里放置断点时它没有暂停。我以前从未使用过 .Emit 引发事件的方式,并且在研究中没有发现太多,所以也许那里出了问题?

我的代码如下。

是否有任何明显的原因 OnOpen.Emit 实际上不应该引发 OnOpen 事件?

0 投票
1 回答
1706 浏览

c# - C# 中的基本 WebSocketSharp 客户端连接

我如何让它工作:

错误是:

0 投票
0 回答
1704 浏览

asp.net - 如何在 WPF 应用程序和 ASP.Net 应用程序之间设置 Websocket-sharp 连接?

我有一个桌面应用程序 (WPF) 和一个 Web 应用程序 (ASP.Net),并想使用 WebSocket-Sharp 设置连接。

在客户端:

在服务器端:

Chat 是一个继承 WebSocketBehavior 类的类。

有两个问题:

  1. 如何确定在服务器端放置代码的正确位置?

  2. 我在 IIS 中设置的端口是否应该与 WebSocket 不同?我可以将任何端口设置为 WebSocket 吗?

谢谢!

0 投票
1 回答
1374 浏览

c#-4.0 - 使用 Websocket.SendAsync() 和 OnMessage 回调函数的 Websocketsharp 库的请求/响应范例

我正在尝试为 Websocketsharp 库实现请求/响应范例,它与 HttpClient 的请求/响应异步行为完全相同。我正在尝试使用下面代码中给出的异步回调来实现它。我试图让 SendAsync 方法的 OnMessage 回调事件等到服务器发送响应。我能够在 SendAsync 方法的范围内获得响应,但是一旦我们离开 SendAsync 范围,它就会清除响应的值。

0 投票
0 回答
727 浏览

javascript - 多个 websocket 的问题(随着时间的推移)

TLDR:我的 websocket 会在一段时间后停止连接,尽管它们一开始工作得很好。我如何解决它?

我有一个使用两个 websocket(通过 websocket-sharp)的 C# web 服务。它们的定义如下:

这些 websocket 服务器接受来自我的 angularjs 应用程序的客户端连接:

在其他地方:

该应用程序主要位于一页上。(我们大部分时间都显示一个状态页面,但允许用户离开去执行诸如管理配置之类的事情。)当我们从 status2 套接字(socket2)接收到某个状态值时,我们想做一些事情,所以我们有一直跟踪它。另一个套接字仅在该页面上时才相关,因此我们希望在不需要它时摆脱它。

这就是问题所在:该应用程序通过调用定期刷新页面,例如location.reload(true). 起初它工作得很好,经过这么多次刷新后,套接字不再连接。控制台中没有错误,也没有onOpen()函数触发。发生了什么事,我该如何解决?

0 投票
0 回答
1199 浏览

c# - 在 unity3d 中连接 websocket 时发生错误

这是我的客户端(unity3d C# 代码),我正在与 python websocket 服务器连接

我有这个代码来连接网络套接字,但是当我的场景开始时它会触发错误事件,我得到了这个

错误消息:连接时发生错误。UnityEngine.Debug:Log(Object) NodeWebSocketCaller:m__3(Object, ErrorEventArgs) (在 Assets/NodeWebSocketCaller.cs:30) WebSocketSharp.Ext:Emit(EventHandler`1, Object, ErrorEventArgs) (在 Assets/SocketIO/WebsocketSharp/Ext. cs:992) WebSocketSharp.WebSocket:error(String) (在 Assets/SocketIO/WebsocketSharp/WebSocket.cs:1011) WebSocketSharp.WebSocket:doHandshake() (在 Assets/SocketIO/WebsocketSharp/WebSocket.cs:989) WebSocketSharp.WebSocket :connect() (在 Assets/SocketIO/WebsocketSharp/WebSocket.cs:874) WebSocketSharp.WebSocket:Connect() (在 Assets/SocketIO/WebsocketSharp/WebSocket.cs:1784) NodeWebSocketCaller:Start() (在 Assets/NodeWebSocketCaller. cs:32)

同时打开和关闭事件也在执行。

在服务器端:

请不要问关于我不熟悉的python代码的问题。我刚从互联网上得到这个代码。

0 投票
2 回答
4349 浏览

c# - 在 c# 中跟踪 websocket 尖锐消息的计时器

我在我的 Windows 应用程序中使用 websocket sharp dll 从 GDAX 服务器获取消息。到目前为止一切正常 - 消息即将到来,我正在处理它们。我被卡住的地方是消息停止出现的时候。至少我在 WebSocket.OnMessage 事件(https://github.com/sta/websocket-sharp)中没有找到任何可以帮助我跟踪消息何时停止的东西(我也尝试了 emitonping)

现在我收到的消息有一个消息类型“心跳”,每秒发送一次。我想添加一个单独的计时器控件来检查心跳消息是否每秒发送一次,如果它停止发送,那么我将需要再次重新连接服务器。但是由于消息停止发送时没有任何反应,我该如何跟踪它,我应该在哪里放置计时器代码来检查心跳消息何时停止发送?

我希望我能解释一下我受到打击的情况。如果有人渴望帮助我并需要更多输入,请告诉我。

更新

编辑 我正在使用 Windows 窗体计时器控件,它继续调用 timer1_Tick 方法并且不调用 OnWSMessage 方法。如何确保两者并行运行,如果任何消息丢失或消息停止发送,则它会重新连接?

Edit2 下面提供的解决方案建议在 onMessage 事件中添加计时器功能,但如果我没有收到消息会发生什么?如果未收到消息,则代码不执行任何操作。我采用了一个全局变量,每当收到消息时,它都会在该变量中添加时间。现在我想运行一个单独的计时器控件,它将检查该变量中是否有任何内容,如果它的值(即秒差)大于 1,那么继续检查其他内容。

有没有人可以调查一下并请提供建议。

Update2:我仍然想使用 windows.timer 控件而不是 threading.timer 来执行此操作。我在我的 Windows 应用程序中使用了两个标签,lbllastheartbeat(显示收到心跳消息的时间)和 lblNow(显示调用计时器的当前时间)。

要求 - 我的计时器将检查是否丢失了任何心跳消息,这是通过“lastHeartbeatTime”变量完成的,该变量存储接收心跳消息的时间。

如果有人可以查看我的代码并提出我做错了什么或哪里做错了,我将不胜感激。