Me gustaría ejecutar un servidor WebSocket fuera de una función de trabajador en Azure.Running Fleck (o cualquiera) servidor Websocket en Windows Azure
Esto funciona bien localmente en el emulador, pero hay un aviso de firewall de Windows la primera vez que se ejecuta el servidor de socket.
Me pregunto si alguien sabría cómo solucionar los problemas de conexión con respecto a los enchufes en Azure.
Mi aplicación servidor de 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
La implementación del cliente:
var socket = new WebSocket("ws://theappname.cloudapp.net:8080");
socket.onopen = function() {
status.html("Connection Opened");
};
socket.onclose = function() {
status.html("Connection Closed");
}
El estado cambia a closed
unos segundos después de cargar la página.
Mi punto final para el papel del trabajador a continuación:
WebSocket Input http 8080 <Not Set>
Ahora he tratado de obligar a la dirección IP interna utilizando la siguiente:
RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["WebSocket"].IPEndpoint.ToString();
SOLUCIÓN
Por el bien de cualquier otra persona que enfrenta esto al implementar websockets en Azure;
Es posible que su firewall denegará su conexión si no está en el puerto 80 u 8080, por lo que debe crear una implementación separada para él.
El punto extremo debe establecerse en TCP y no HTTP para que se creen las reglas de firewall correctas. (Ver imagen)
Solo por el bien de la prueba, ¿por qué no cambias tu Input Endpoit del protocolo "http" al "tcp"? Y establezca explícitamente el puerto local en 8080 (que en su caso es). También debe tener en cuenta que Windows Azure Load Balancer mataría cualquier conexión que esté inactiva durante más de 60 segundos. –
astaykov
@astaykov - Su comentario dio lugar a la solución, publique a continuación para que pueda + acreditarlo. Gracias. – f0x
@astaykov ¿Tiene su implementación completa?Estoy tratando de hacer que la mía funcione y nunca he hecho esto antes. – Yecats