2016-04-27 247 views
1

我试图连接到websocket服务器。c#未能连接到websocket服务器

参考在这里:reference

但是,它不起作用的例子。

代码运行到OnError方法。

的错误是:

A connection attempt failed because the connected party did not properly 
respond after a period of time, or established connection failed because 
connected host has failed to respond 202.160.125.44:80 

这里是我的网址:

https://websocket.vndirect.com.vn/notisocket/noti 

这里是我的代码:

public class NotiSocket 
{ 
    private WebSocketSharp.WebSocket m_webSocket; 
    public NotiSocket() 
    { 
     m_webSocket = new WebSocketSharp.WebSocket("ws://websocket.vndirect.com.vn/notisocket/noti"); 
     m_webSocket.OnMessage += m_webSocket_OnMessage; 
     m_webSocket.OnError += m_webSocket_OnError; 
     m_webSocket.OnOpen += m_webSocket_OnOpen; 
     m_webSocket.OnClose += m_webSocket_OnClose; 
     m_webSocket.Connect(); 
     Console.ReadLine(); 
    } 

    private void m_webSocket_OnClose(object sender, WebSocketSharp.CloseEventArgs e) 
    { 
     Console.WriteLine("Disconnected to websocket server."); 
    } 

    //error on websocket 
    private void m_webSocket_OnError(object sender, WebSocketSharp.ErrorEventArgs e) 
    { 
     Console.WriteLine(e.Message); 
    } 

    //connected to websocket server 
    private void m_webSocket_OnOpen(object sender, EventArgs e) 
    { 
     Console.WriteLine("Connected to websocket server"); 
     //m_webSocket.Send("Hello"); 
    } 

    //receive msg from websocket server 
    private void m_webSocket_OnMessage(object sender, WebSocketSharp.MessageEventArgs e) 
    { 
     Console.WriteLine(e.Data); 
    } 
} 

我不明白为什么必须从HTTP更改,htpps到ws,wss。

这里的连接有什么问题?

+0

既然它说“主机未能响应202.160.125.44:80”,你检查你是否有权访问该IP和端口?听起来像可能有某种类型的防火墙问题?请验证您有权访问该IP和端口。 – MrApnea

+0

如何检查我有权访问该IP和端口?以及如何解决防火墙问题? – anhtv13

+0

如果你知道如何使用telnet,你可以尝试一下,只是尝试连接,看看它说。如果不使用网络浏览器,只需浏览:http://202.160.125.44:80。 (你不需要指定:80,因为这是http的默认端口)。你可能会得到一个错误有趣的是什么样的错误,是你不能连接它的错误可能是一个防火墙问题,如果有别的东西可以确定。试试看,让我们知道。 – MrApnea

回答

1

WebSocketSharp.WebSocket()该字符串应该从

"ws://websocket.vndirect.com.vn/notisocket/noti" 

改为

"wss://websocket.vndirect.com.vn/notisocket/noti" 

你有ws:wss:更换http:https:原因很简单,因为WebSocket的客户端库(WebSocketSharp )检查方案部分以确定使用HTTP或HTTPS。如果WebSocket客户端库接受http:https:并在内部将它们解释为ws:wss:,则不必替换方案部分。实际上,存在这样一个WebSocket客户端库。