c# - 无法使用 c# 订阅 WebSocket 上的特定频道
问题描述
我在 JavaScript 中有这种方式的 websocket 侦听器。
var connectionLostMessage = null;
function websocketConnect() {
var conn = new ab.Session('ws://abc.xyz.dd:8080?time=1627624930.3964',
function () {
clearTimeout(connectionLostMessage);
connectionLostMessage = null;
conn.subscribe('316627', function (topic, data) {
//some code to use data display
});
},
function () {
//When connection fails
//Connection fail handling
setTimeout(function () {
websocketConnect();
}, 1000)
},
{'skipSubprotocolCheck': true}
);
}
websocketConnect();
我想使用 c# 连接并订阅频道,如下行的 JavaScript 中所示。
conn.subscribe('316627', function (topic, data) {
我尝试过这种方式,但无法以上述方式订阅。
public async Task WebsocketClientTest()
{
var url = new Uri("ws://abc.xyz.dd:8080");
var exitEvent = new ManualResetEvent(false);
using (var client = new WebsocketClient(url))
{
client.MessageReceived
.Subscribe(msg => Console.WriteLine($"msg.Text: {msg.Text}, msg.MessageType: {msg.MessageType}"));
await client.Start();
exitEvent.WaitOne();
}
Console.ReadLine();
}
我需要在 .Net Core 中编写一个控制台应用程序。请建议任何与 .Net Core 3.1 兼容的帮助或第三方
非常感谢!
解决方案
我按照jdweng在上述评论中提出的这种方式找到了解决方案。我做错的唯一一件事是发送消息的格式。我的问题在问题编辑后也缺少发送行。
client.Send($"[5, \"123456"]");
推荐阅读
- mongodb - 无空间维修
- python - Tkinter 创建一个隐藏的框架
- html - 为什么当父容器显示为 flex 时,margin 属性在最后一个容器上工作?
- prolog - 家谱中2之间的Prolog连接
- python - Python cron作业记录错误的时间戳
- excel - 根据组级别更新列中的 BOM 单元
- javascript - 全局功能组件钩子
- handlebars.js - 无法在 sum 车把的助手内使用 if 条件
- javascript - TreeView - 如何将可扩展 TreeItem 的字体更改为粗体?
- android - Android Firebase 实时“DatabaseDefault FirebaseApp 未初始化”