C# WebSocket在Internet上不工作

C# WebSocket在Internet上不工作,c#,javascript,html,ip,websocket,C#,Javascript,Html,Ip,Websocket,我目前有一个WebSocket服务器(C#)和一个客户端(JavaScript/HTML5)。这在我的本地网络上非常有效,但是当我监听并让客户端连接到我的“真实”IP(这是我的路由器在全球范围内可识别的IP,即代替192.168.x.x)时,它不起作用。WebSocket类确实获得了readyState的1,但是当我从客户端向服务器发送任何东西时(或者反过来),消息没有到达 我已经将路由器设置为启用端口转发,否则它无论如何都无法工作(我尝试不启用此功能,而WebSocket立即获得readySt

我目前有一个
WebSocket
服务器(C#)和一个客户端(JavaScript/HTML5)。这在我的本地网络上非常有效,但是当我监听并让客户端连接到我的“真实”IP(这是我的路由器在全球范围内可识别的IP,即代替
192.168.x.x
)时,它不起作用。WebSocket类确实获得了
readyState
1
,但是当我从客户端向服务器发送任何东西时(或者反过来),消息没有到达

我已经将路由器设置为启用端口转发,否则它无论如何都无法工作(我尝试不启用此功能,而
WebSocket
立即获得
readyState
2

JavaScript代码:

var ws = new WebSocket("ws://some.real.ip.address:myport");
// For privacy reasons I'd like to keep the address and port private
C代码(我正在使用Nugget库实现一个套接字服务器):

显然,地址和端口是相同的

原因可能是什么?当我的计算机是服务器时,我的ISP是否可能不允许套接字连接?如果是这样,为什么
WebSocket
会获得
1
readyState


非常感谢。

这是我的错-不确定这个答案是否对任何人都有帮助,但我正在听
/bke
,我没有通过JavaScript
WebSocket
构造函数…

你用另一种方法测试路由器转发规则了吗?只需打开telnet连接并检查通信情况,或者临时托管一个简单的web服务器,查看端口是否正确打开。这确实有效-将某个端口上的传入请求转发到我的web服务器端口就像一个符咒。但是web套接字端口奇怪地失败了。。。另外,当通过Chrome以HTTP请求的形式访问我的web套接字端口时,我会收到一个空响应错误,而使用其他端口会导致连接拒绝错误。所以有一个区别,即端口转发不是我想的重点。哎呀,我的错!我忘了向
WebSocket
地址添加路径。我需要在JavaScript中的IP之后添加
/bke
,因为我限制了对该路径的监听。我很抱歉!
var nugget = new WebSocketServer(myport, "*", "ws://some.real.ip.address:myport");