0

次のような websocket サーバー アプリケーションがあります。private static void InitializeSockets() { _sockets = new List();

  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を使用しています。Websocket機能を備えたホストWCFサービスへの.net 4.5の規定があることを知りました。.net 4.5 を使用できません。そしてIIS8も... :(私のサーバーをホストするオプションはありますか??????? node.jsのオプションはありますか????

ありがとう、アリジット

4

1 に答える 1

1

はい、node.js と socket.io は Web ソケットをサポートしています。Node.js は、IIS 内でホストされるのではなく、独自のサービスとして実行する必要があります。

IIS で Web ソケット サーバーをホストする場合は、Windows Server 2012 (または Windows 8) と IIS 8.0 が必要です。この記事で詳しく説明されているように

iisnodeプロジェクトを使用して、IIS 内で node.js アプリケーションをホストできますが、これを行うとすぐに、Web ソケットをサポートするために IIS8 が必要になります。

于 2013-04-24T05:38:33.223 に答える