【发布时间】:2013-04-24 04:16:43
【问题描述】:
我有一个像下面这样的 websocket 服务器应用程序。 私有静态无效 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>
在 MultiClient 场景下,一切都运行良好...... 现在我只想托管服务器并想从任何地方访问.. 目前我正在使用.Net 4.0。 我知道有一个规定是 .net 4.5 来托管具有 websocket 功能的 WCF 服务。我不能使用 .net 4.5。还有 IIS8... :( 有什么选项可以托管我的服务器.????????? node.js 的任何选项????
谢谢, 阿里吉特
【问题讨论】:
标签: .net wcf node.js iis websocket