WebSocket服务端C#
//启动websocket服务
private string StartWebSocket()
{
var url = "wss://127.0.0.1:" + txtPort.Text;
server = new Fleck.WebSocketServer(url); //创建webscoket服务端实例
string s = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "dotnet.linux.pfx");
server.Certificate = new X509Certificate2(s, "123456");
var showMsg = new Action<string>(ShowMsg);
try
{
server.Start(socket =>
{
socket.OnOpen = () =>
{
Log.Info("StartWebSocket", "open");
};
socket.OnClose = () =>
{
Log.Info("StartWebSocket", "Close");
};
socket.OnMessage = message =>
{
Log.Info("WebSocket.OnMessage", message);
this.Invoke(showMsg, "收到消息: " + message);
socket.Send("服务端收到了你的消息: " + message);
};
});
return "服务启动成功: " + url;
}
catch (Exception ex)
{
//启动websocket服务失败
Log.Info("StartWebSocket", ex.ToString());
MessageBox.Show(string.Format("服务启动失败, 端口{0}被占用!\r\n请拍照给系统管理员", txtPort.Text), "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
throw ex;
}
}
WebSocket客户端: html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>websocket client</title>
<script type="text/javascript">
var start = function () {
var inc = document.getElementById('incomming');
var wsImpl = window.WebSocket || window.MozWebSocket;
var form = document.getElementById('sendForm');
var input = document.getElementById('sendText');
inc.innerHTML += "连接服务器..<br/>";
// 创建一个新的websocket并连接
window.ws = new wsImpl('ws://127.0.0.1:39812');
// 当数据来自服务器时,将调用此方法
ws.onmessage = function (evt) {
inc.innerHTML += ("[来自服务器的消息] " + evt.data + '<br/>');
console.log("[来自服务器的消息] " + evt.data);
};
// 当建立连接时,将调用此方法
ws.onopen = function () {
inc.innerHTML += '已建立连接.. <br/>';
};
// 当连接关闭时,将调用此方法
ws.onclose = function () {
inc.innerHTML += '连接已关闭.. <br/>';
}
form.addEventListener('submit', function (e) {
e.preventDefault();
var val = input.value;
ws.send(val);
input.value = "";
});
}
window.onload = start;
</script>
</head>
<body>
<form id="sendForm">
<span>输入内容按回车发送消息</span> <br/>
<input id="sendText" placeholder="Text to send" />
</form>
<pre id="incomming"></pre>
</body>
</html>