특정 시나리오를 설정하려고하지만 분명히 문제가 있습니다. 내 서버는 주로 WCF 서비스를 호스트하는 사이트이지만 여기에도 XSockets 호스트를 추가하려고합니다. readme.txt의 지침에 따라 부트 스트랩 코드 파일에 표준 코드가 있습니다. 클라이언트 연결시 기본적으로 클라이언트가 모니터 할 하트 비트 인 작업자 스레드를 시작합니다. 내 작업자 스레드 내에서XSockets 클라이언트 메시지를 수신하지만 연결되지 않음
public class HeartbeatController : XSocketController
{
public void AddMessage(string message)
{
this.SendToAll(message, "addMessage");
}
}
내가 이것을 호출 오전 : 다음과 같이 컨트롤러에서 관련 코드는
string message = String.Format("pump", Math.Round(cpuCounter.NextValue());
ClientPool connection = ClientPool.GetInstance("ws://mywebsite:4502/HeartbeatController", "*");
connection.Send(message, "addMessage");
현재 I는 다음과 같습니다 콘솔 클라이언트를 사용하여이 테스트 해요 :
class Program
{
static XSocketClient socketClient;
static void Main(string[] args)
{
Console.WriteLine("Starting client...");
string url = "ws://mywebsite:4502/HeartbeatController";
socketClient = new XSocketClient(url, "*");
socketClient.OnOpen += socketClient_OnOpen;
socketClient.Open();
while (true)
{
// let it sit and display the "pump" messages
string input = Console.ReadLine();
if (input.Equals("Q", StringComparison.Ordinal))
{
break;
}
}
}
static void socketClient_OnOpen(object sender, EventArgs e)
{
Console.WriteLine("socketClient Opened");
socketClient.Bind("addMessage", OnAddMessage);
}
private static void OnAddMessage(ITextArgs textArgs)
{
Console.WriteLine("AddMessage :: {0}", textArgs.data);
}
}
클라이언트에서 socketClient_OnOpen 메서드에 중단 점을 넣으면 충돌이 발생하여 연결하는 것으로 생각됩니다. 그러나 펌프 메시지는 클라이언트에게 결코 전달하지 않습니다.
두 질문 :
- 는 내가 부족 분명 있나요?
- (관련 없음) 많은 기업들이 실제로 방화벽에서 구멍을 뚫는 것을 좋아하지 않으므로 클라이언트 연결이 "ws : // mywebsite/HeartbeatController"처럼 보이도록이 설정에서 포트 80을 사용할 수있는 방법이 있습니까? ?
어떤 도움을 주셔서 감사합니다!
감사합니다. @Uffe, 매력처럼 작동했습니다! 내 두 번째 질문에 대한 아이디어가 있습니까? XSockets 통신에 포트 80을 사용할 수 있습니까? 지금이 아니라면, 그것이 추가 될 무언가가 될 것입니까? – Chuck
포트 80에서 XSocket을 실행할 수 있지만 이미 IIS 또는 포트를 사용하는 다른 웹 서버/서비스가있는 경우에는 실행할 수 없습니다. 우리는 4.0 버전을 출시하려고합니다. 그러면 OWIN에서 XSocket을 호스트 할 수있게 될 것이고 따라서 포트 80을 사용하십시오. – Uffe
업데이트 해 주셔서 감사합니다. 나는 4.0이 거리를 때릴 때 그것을 조사 할 것이다. – Chuck