代码写到35岁 2023-06-19 17:11 采纳率: 9.1%
浏览 45
已结题

C# 利用 SocketIoClientDotNet通信报错

C# 利用 SocketIoClientDotNet作为socket通信的客户端,调用Java的Socket服务端,Java端用的组件是 netty-socketio,连接的有时可以连接成功,有时不成功报错误 xhr poll error,
以下是我的代码,不知道是什么原因



            var options = new IO.Options();
            options.QueryString = "roomId=spc";

            options.IgnoreServerCertificateValidation = true;
            options.AutoConnect = true;
            options.ForceNew = true;
            options.Timeout = 1000 * 5;
            options.Secure = true;
            options.ReconnectionDelay = 5000;
            options.Reconnection = true;
           // options.Transports = ImmutableList.Create<string>("websocket");
            // options.Agent = true;
            //  options.Transports = new ImmutableList<string>("websocket");


            var socket = IO.Socket("ws://***.**.**.***:4000/", options);//实例化对象

            // 监听连接上
            socket.On(Socket.EVENT_CONNECT, () =>       //监听链接
            {
                Console.WriteLine("链接成功");
                socket.Emit("sendMessage", "Client Link Success");     //发送消息,前面是事件后面是时间  注意:发消息要保证链接是通的,如果链接不通就发数据,再链接上就发不出去
                socket.On("sendMessage", (data) =>      //监听事件
                {
                    Console.WriteLine(data);
                    // var b = (JObject)data;  //将数据转一下
                    // Console.WriteLine(b['name']);
                    Console.WriteLine(data);
                    //socket.Disconnect();      //退出链接

                });
            });
            socket.Connect();   //链接

            // 监听连接关闭
            socket.On(Socket.EVENT_DISCONNECT, () => {
                //this.m_robot.OutLogMsg("退出联网");
                //conn_net = false;
                socket.Disconnect(); 
            });                   //socket.close(); 方法只能在这里disconnect 下 关闭其他如 reconnet等等不行       
                                  // Console.ReadKey();

            // 监听错误
            socket.On(Socket.EVENT_ERROR, (err) =>
            {
                Console.WriteLine("Event Error");
                 // socket.Disconnect();
            });

            // 监听连接错误
            socket.On(Socket.EVENT_CONNECT_ERROR, (err) =>
            {
                Console.WriteLine("Connect Error");
                socket.Connect();
            });
  • 写回答

2条回答 默认 最新

  • MarkHan_ 2023-06-19 17:49
    关注

    这个错误一般跟WebSocket传输方式有关
    在Socket.IO中,它尝试首先使用WebSocket进行传输,如果不可用,则回退到其他传输方式(如XHR Polling)。根据你的代码,尝试通过设置options.Transports来强制使用WebSocket传输,但是你注释掉了该行。你可以尝试取消注释并重新启用这行代码,看看问题是否得到解决

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月19日
  • 修改了问题 6月19日
  • 创建了问题 6月19日

悬赏问题

  • ¥15 Java与Hbase相关问题
  • ¥20 bash代码推送不上去 git fetch origin master #失败了
  • ¥15 LOL外服加入了反作弊系统,现在游戏录像rofl文件离线都无法打开
  • ¥15 在centos7安装conda
  • ¥15 c#调用yolo3 dll文件获取的数据对不上
  • ¥20 WPF 如何实现多语言,label 和cs(live Charts)中是否都能翻译
  • ¥15 STM32F103上电短路问题
  • ¥15 打开软件提示错误:failed to get wglChoosePixelFormatARB
  • ¥15 (标签-python|关键词-char)
  • ¥15 python+selenium,在新增时弹出了一个输入框