我想在Azure中的工作者角色上運行WebSocket服務器。在Windows Azure上運行Fleck(或任何)Websocket服務器
在模擬器上可以很好地在本地工作,但第一次運行套接字服務器時會出現一個Windows防火牆提示。
我想知道是否有人會知道如何克服有關Azure套接字的連接問題。
我的socket服務器實現:OnStart
var server = new WebSocketServer("ws://theappname.cloudapp.net:8080/");
server.Start(socket =>
{
socket.OnOpen =() =>
{
Trace.WriteLine("Connected to " + socket.ConnectionInfo.ClientIpAddress,"Information");
_sockets.Add(socket);
};
});
.... etc
客戶端實現:
var socket = new WebSocket("ws://theappname.cloudapp.net:8080");
socket.onopen = function() {
status.html("Connection Opened");
};
socket.onclose = function() {
status.html("Connection Closed");
}
加載頁面後幾秒鐘的狀態更改爲closed
。
我對下面的工人角色的端點:
WebSocket Input http 8080 <Not Set>
我現在已經嘗試使用綁定到內部IP地址如下:
RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["WebSocket"].IPEndpoint.ToString();
解決方案
爲了在Azure上實現websockets時遇到此問題的任何人;
如果不是在端口80或8080上,您的防火牆可能會拒絕您的連接,因此請爲其創建單獨的部署。
爲了創建正確的防火牆規則,端點必須設置爲TCP而不是HTTP。 (見圖片)
只是爲了試用,爲什麼不將輸入終點從「http」更改爲「tcp」協議。並明確設置本地端口爲8080(在你的情況下是)。另外,您必須記住,Windows Azure負載平衡器會終止任何閒置超過60秒的連接。 –
astaykov
2012-02-08 07:48:24
@astaykov - 您的評論導致解決方案,請在下面發佈,這樣我就可以+聲譽。謝謝。 – f0x 2012-02-09 09:36:40
@astaykov你有完整的實現嗎?我試圖讓我的工作,並從未這樣做過。 – Yecats 2013-10-13 00:13:40