2014-12-23 3 views
0

Я с очень большой проблемой в настоящее: У меня есть сервер, где пользователи могут подключаться и отправлять & получать сообщения, написанные на C# с использованием библиотеки Alchemy, но теперь у меня есть сообщения от пользователей, которых они не могут подключиться к серверу веб-сервера. В Serverlog они автоматически отключаются, а не соединяются.C# & JS WebSocket Некоторые пользователи не могут подключиться к серверу

Здесь C# Код:

internal static bool Init(int bindPort, int maxConnections) 
    { 
     _Port = bindPort; 
     _maxConnections = maxConnections; 
     _activeConnections = new HashSet<int>(); 


     try 
     { 
      var aServer = new WebSocketServer(_Port, IPAddress.Any) 
      { 
       OnReceive = OnReceive, 
       OnSend = OnSend, 
       OnConnected = OnConnect, 
       OnDisconnect = OnDisconnect, 
       TimeOut = new TimeSpan(0, 5, 0) 
      }; 
      aServer.Start(); 
      Console.WriteLine(" [] WebSockets port: " + _Port + "."); 
      return true; 
     } 
     catch 
     { 
      Console.WriteLine(" WebSocket konnte nicht geladen werden"); 
      return false; 
     } 
    } 

    public static void SendAll(string data) 
    { 
     foreach(UserContext Kubbo in OnlineUsers.Keys) 
     { 
      Kubbo.Send(data); 
     } 
    } 
    private static void OnConnect(UserContext context) 
    { 
     try 
     { 
      int connectionID = 0; 
      for (int i = 1; i < _maxConnections; i++) 
      { 
       if (_activeConnections.Contains(i) == false) 
       { 
        connectionID = i; 
        break; 
       } 
      } 

      if (connectionID > 0) 
      { 

       Console.WriteLine("[" + connectionID + "] Verbindung " + context.ClientAddress); 

       context.Send("A"); 
       _activeConnections.Add(connectionID); 
       _acceptedConnections++; 

       var me = new User { Context = context }; 
       OnlineUsers.Add(context, context.ClientAddress.ToString()); 
      } 
     } 
     catch 
     { 
     } 
    } 
    internal static void OnDisconnect(UserContext context) 
    { 
     try 
     { 
      OnlineUsers.Remove((UserContext)context); 
      Console.WriteLine("[] Verbindung wurde geschloßen"); 
     } 
     catch 
     { 
      Console.WriteLine("{}"); 
     } 

    } 

Javascript кода (на самом деле просто используя обычный сокет API, реализованный в JavaScript):

var ws = new WebSocket("ws://localhost:38819/"); 
ws.onopen = function() 
{ 
    ws.send("A"); 
    alert("Connection sucessfully opened"); 
}; 

    ws.onclose = function() 
{ 
    alert("Connection is closed..."); 
}; 

ответ

0

Что ОС сервер работает на? Например, Windows 7 Ultimate по умолчанию - 20 параллельных подключений.

+0

ОС - Windows Server 2008 PS: инициализация сервера websocket - это WebSocket.Init (38819, 250); 250 - максимальное соединение – user4389516

+0

Является ли ваше приложение параллельным? –

+0

nope, но у меня есть новая отметка, я протестировал 7 пользователей, у всех есть один и тот же браузер и версия, но у двух пользователей соединение каждый раз закрывается другими 5, работая как шарм, я действительно расстроен: / – user4389516

Смежные вопросы