SignalR, OWIN 및 Azure 작업자 역할을 사용하는 간단한 WebSocket 서버를 얻으려고합니다.간단한 SignalR Azure 작업자 역할을 수행 할 수 없습니다.
WorkerRole.cs :
public class WorkerRole : RoleEntryPoint
{
public override void Run()
{
string url = "http://" + RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["MyEndpoint"].IPEndpoint;
using (WebApp.Start<Startup>(url))
{
Trace.WriteLine(String.Format("Server running on {0}", url));
}
while (true)
{
}
}
/* ... */
}
Startup.cs :
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR();
}
}
MyHub.cs :
public void Send(string name, string message)
{
Clients.All.addMessage(name, message);
}
끝점 "MyEndpoint은"HTTP로 서비스에 정의되어, 공립 및 사설 포트 5001
서비스를 시작한 후 Azure Compute Emulator에서 5001로 실행 중으로 표시됩니다. 그러나 ws : //127.0.0.1 : 5001/signalr (또는 ws : //127.0.0.1 : 5001)에 연결하려고하면 서비스가 시작됩니다. 응답이 없습니다. 이 목적을 위해 두 개의 서로 다른 웹 소켓 클라이언트를 사용하고 있습니다 (둘 다 Chrome 플러그인이며 둘 다 다른 WebSocket 서버를 사용하여 잘 작동했습니다).
질문 :
1) 설정에 문제가 있습니까?
2) SignalR JS 클라이언트 라이브러리를 사용하여 SignalR 서버에 연결해야합니까? 아니면 WebSocket 프로토콜을 구현하는 바닐라 클라이언트가 연결할 수 있습니까?
다른 웹 소켓 프레임 워크 (XSockets)로 시도한 후 WebRole에서 실행될 때 (콘솔 응용 프로그램으로 작동 할 때) 코드가 작동하지 않으면이 문제가 Azure DevFabric과 관련이 있다고 생각하기 시작했습니다. 네트워크 통신을 처리합니다. Azure가 웹 소켓 통신을 방해 할 수있는 재미있는 네트워크 방식을 수행하는지 아는 사람 있습니까? 엔드 포인트가 있으며 Compute Emulator에 표시되지만 연결할 수는 없습니다. – tremolo