Xamarin SocketIoClientDotNet xhr民意调查错误

时间:2018-01-04 17:44:04

标签: xamarin socket.io header

我目前正在使用Xamarin.Forms开发聊天应用程序。我添加了以下库作为项目引用:

  • EngineIOClient.Net
  • SocketIOClientDotNet
  • WebSocket4Net

我设法建立连接并与服务器交换消息。问题在于,在开发的某个阶段,生产环境不仅要求HTTPS请求而且还要求套接字消息使用额外的标头。结果,我总是得到" xhr轮询错误"此事件中的消息:

  _socket.On(Socket.EVENT_CONNECT_ERROR, (data) =>
            {
                //Do something here
            });

我试图找到一个示例,如何将标头添加到我的套接字实例,但没有任何运气。我查看了soket.io的Android示例,看起来很简单:

socket.io().on(Manager.EVENT_TRANSPORT, new Emitter.Listener() {

@Override public void call(Object... args) { 
Transport transport = (Transport)args[0];

transport.on(Transport.EVENT_REQUEST_HEADERS, new Emitter.Listener() {
  @Override
  public void call(Object... args) {
    @SuppressWarnings("unchecked")
    Map<String, List<String>> headers = (Map<String, List<String>>)args[0];
    // modify request headers
    headers.put("Cookie", Arrays.asList("foo=1;"));
  }
});

transport.on(Transport.EVENT_RESPONSE_HEADERS, new Emitter.Listener() {
  @Override
  public void call(Object... args) {
    @SuppressWarnings("unchecked")
    Map<String, List<String>> headers = (Map<String, List<String>>)args[0];
    // access response headers
    String cookie = headers.get("Set-Cookie").get(0);
  }
});

} });

我尝试在C#中实现类似的代码:

 _socket.Io().On("transport", o =>
                {

                    Transport transport = (Transport)o;
                    transport.On(Transport.EVENT_REQUEST_HEADERS, new ListenerImpl(o1 =>
                    {
                        var headers = (Dictionary<string, List<string>>)o1;
                        headers.Add("MyHeader", new List<string> { "MyHeaderValue" });
                    }));

                    transport.On(Transport.EVENT_RESPONSE_HEADERS, new ListenerImpl(o2 =>
                    {
                        var headers = (Dictionary<string, List<string>>)o2;

                    }));
                });

但传输事件永远不会被触发。是否可以使用此库向套接字连接添加标头?我错过了什么吗?

0 个答案:

没有答案