2013-04-24 113 views
0

我有一個websocket服務器應用程序像波紋管。 (); _sockets = new List();如何託管我的WebSocket

var server = new WebSocketServer("ws://localhost:1234"); 

    server.Start(socket => 
    { 
    socket.OnOpen =() => 
    { 
       Console.WriteLine("Socket is Opened..timeStame: " + DateTime.Now); 
       Console.WriteLine("Connected to " +  socket.ConnectionInfo.ClientIpAddress); 
       _sockets.Add(socket); 

      }; 
      socket.OnClose =() => 
      { 
       Console.WriteLine("Socket is Closed..timeStame:" + DateTime.Now); 
       Console.WriteLine("Disconnected from " + socket.ConnectionInfo.ClientIpAddress); 
       _sockets.Remove(socket); 
      }; 
      socket.OnMessage = message => 
      { 
       Console.WriteLine(socket.ConnectionInfo.ClientIpAddress + " Message: " 
          + message + " timeStame: " + DateTime.Now); 
      }; 
     }); 


    } 

這是一個控制檯C#應用與我具有被調用_socket.Send一個計時器對象(value.ToString());爲每一秒連接的客戶端。

static void timer_Elapsed(object sender, ElapsedEventArgs e) 
    { 
     Random rand = new Random(); 

     int value = rand.Next(0, 100); 

     if (_sockets.Count > 0) 
     { 
      foreach (var _socket in _sockets) 
      { 
       _socket.Send(value.ToString()); 
      } 
     } 
    } 

而且我有類似波紋管的HTML客戶端。其中status是一個顯示服務器值的標籤。

 function socketSetup () { 
     if (typeof (WebSocket) !== 'undefined') { 
      var status = document.getElementById('status'); 

       status.innerHTML = "Connecting to server..."; 
       socket = new WebSocket('ws://localhost:1234'); 

       socket.onopen = function() { 

        console.log("onopen is Called.."); 
        status.innerHTML = "Connection successful."; 

       }; 
       socket.onclose = function() { 
        console.log("onclose is Called.."); 
        status.innerHTML = "Connection closed."; 
       }; 
       socket.onmessage = function (e) { 

        console.log("onmessage is Called.."); 

        var jsonObject = eval('(' + e.data + ')'); 
        status.innerHTML = jsonObject; 
        socket.send("Client Updated With :" + jsonObject); 
       }; 
      } else 
       alert("Your Browser does not support Web Socket"); 
     }; 
    </script> 

每一件事情是工作的罰款與多客戶的情況太.... 現在我只想給主機的服務器,並希望從任何地方訪問.. 目前我使用.NET 4.0。 我知道有一個規定是.net 4.5託管WCF服務與websocket功能。我無法使用.net 4.5。和IIS8太... :( 是否有任何選項來承載我的服務器。??????? 與node.js的????

感謝任何選項, Arijit

回答

1

是, node.js和socket.io支持web套接字,Node.js需要運行它自己的服務,而不是在IIS中託管。

如果你想在IIS中託管一個web套接字服務器,你將需要windows server 2012或Windows 8)和IIS 8.0。詳細信息如下:article

您可以託管node.js應用程序insi de IIS,使用iisnode項目,但是,只要您這樣做,您將需要IIS8以支持Web套接字。