diff --git a/Windows/CS/Framework4.0/CubeLib/CubeLib/CubeLib.csproj b/Windows/CS/Framework4.0/CubeLib/CubeLib/CubeLib.csproj
index 0aa0bad..bb6fabc 100644
--- a/Windows/CS/Framework4.0/CubeLib/CubeLib/CubeLib.csproj
+++ b/Windows/CS/Framework4.0/CubeLib/CubeLib/CubeLib.csproj
@@ -1,4 +1,4 @@
-
+
@@ -38,6 +38,9 @@
+
+ ..\packages\Newtonsoft.Json.13.0.4\lib\net40\Newtonsoft.Json.dll
+
@@ -45,18 +48,28 @@
-
- ..\packages\WebSocketSharp-netstandard.1.0.1\lib\net35\websocket-sharp.dll
+
+ ..\..\..\..\..\..\References\websocket-sharp\websocket-sharp\bin\Debug\websocket-sharp.dll
+
+
+
+
+
+
+
+
+
+
-
+
\ No newline at end of file
diff --git a/Windows/CS/Framework4.0/CubeLib/CubeLib/WebSocket/IWebSocketClient.cs b/Windows/CS/Framework4.0/CubeLib/CubeLib/WebSocket/IWebSocketClient.cs
new file mode 100644
index 0000000..617a715
--- /dev/null
+++ b/Windows/CS/Framework4.0/CubeLib/CubeLib/WebSocket/IWebSocketClient.cs
@@ -0,0 +1,108 @@
+using System;
+
+namespace JoyD.Windows.CS.WebSocket
+{
+ ///
+ /// WebSocket客户端接口
+ ///
+ public interface IWebSocketClient
+ {
+ ///
+ /// 连接WebSocket服务器
+ ///
+ void Connect();
+
+ ///
+ /// 断开WebSocket连接
+ ///
+ void Disconnect();
+
+ ///
+ /// 重连WebSocket服务器
+ ///
+ void Reconnect();
+
+ ///
+ /// 发送消息
+ ///
+ /// 消息类型
+ /// 消息数据
+ void Send(string type, object data);
+
+ ///
+ /// 发送二进制消息
+ ///
+ /// 二进制数据
+ void Send(byte[] data);
+
+ ///
+ /// 获取当前连接状态
+ ///
+ /// 连接状态
+ string GetStatus();
+
+ ///
+ /// 检查是否已连接
+ ///
+ /// 是否已连接
+ bool IsConnected();
+
+ ///
+ /// 获取消息队列大小
+ ///
+ /// 队列大小
+ int GetQueueSize();
+
+ ///
+ /// 连接成功事件
+ ///
+ event EventHandler Connected;
+
+ ///
+ /// 连接断开事件
+ ///
+ event EventHandler Disconnected;
+
+ ///
+ /// 错误事件
+ ///
+ event EventHandler Error;
+
+ ///
+ /// 收到消息事件
+ ///
+ event EventHandler Message;
+
+ ///
+ /// 状态改变事件
+ ///
+ event EventHandler StatusChanged;
+
+ ///
+ /// 正在连接事件
+ ///
+ event EventHandler Connecting;
+
+ ///
+ /// 正在重连事件
+ ///
+ event EventHandler Reconnecting;
+
+ ///
+ /// 消息已发送事件
+ ///
+ event EventHandler MessageSent;
+
+ ///
+ /// 消息已加入队列事件
+ ///
+ event EventHandler MessageQueued;
+
+ ///
+ /// 消息发送失败事件
+ ///
+ event EventHandler MessageFailed;
+ }
+
+
+}
\ No newline at end of file
diff --git a/Windows/CS/Framework4.0/CubeLib/CubeLib/WebSocket/IWebSocketServer.cs b/Windows/CS/Framework4.0/CubeLib/CubeLib/WebSocket/IWebSocketServer.cs
new file mode 100644
index 0000000..7d233c6
--- /dev/null
+++ b/Windows/CS/Framework4.0/CubeLib/CubeLib/WebSocket/IWebSocketServer.cs
@@ -0,0 +1,124 @@
+using System;
+
+namespace JoyD.Windows.CS.WebSocket
+{
+ ///
+ /// WebSocket服务器接口
+ ///
+ public interface IWebSocketServer
+ {
+ ///
+ /// 启动服务器
+ ///
+ /// 端口号
+ void Start(int port);
+
+ ///
+ /// 停止服务器
+ ///
+ void Stop();
+
+ ///
+ /// 广播消息
+ ///
+ /// 消息类型
+ /// 消息数据
+ void Broadcast(string type, object data);
+
+ ///
+ /// 广播二进制消息
+ ///
+ /// 二进制数据
+ void Broadcast(byte[] data);
+
+ ///
+ /// 向指定客户端发送消息
+ ///
+ /// 客户端ID
+ /// 消息类型
+ /// 消息数据
+ void SendToClient(string clientId, string type, object data);
+
+ ///
+ /// 向指定客户端发送二进制消息
+ ///
+ /// 客户端ID
+ /// 二进制数据
+ void SendToClient(string clientId, byte[] data);
+
+ ///
+ /// 检查服务器是否正在运行
+ ///
+ /// 是否正在运行
+ bool IsRunning();
+
+ ///
+ /// 获取当前连接的客户端数量
+ ///
+ /// 客户端数量
+ int GetClientCount();
+
+ ///
+ /// 客户端连接事件
+ ///
+ event EventHandler ClientConnected;
+
+ ///
+ /// 客户端断开事件
+ ///
+ event EventHandler ClientDisconnected;
+
+ ///
+ /// 收到消息事件
+ ///
+ event EventHandler MessageReceived;
+
+ ///
+ /// 错误事件
+ ///
+ event EventHandler Error;
+ }
+
+ // 事件参数类
+ ///
+ /// 客户端连接事件参数
+ ///
+ public class WebSocketClientConnectedEventArgs : EventArgs
+ {
+ ///
+ /// 客户端ID
+ ///
+ public string ClientId { get; set; }
+
+ ///
+ /// 远程端点
+ ///
+ public string RemoteEndpoint { get; set; }
+ }
+
+ ///
+ /// 客户端断开事件参数
+ ///
+ public class WebSocketClientDisconnectedEventArgs : EventArgs
+ {
+ ///
+ /// 客户端ID
+ ///
+ public string ClientId { get; set; }
+
+ ///
+ /// 远程端点
+ ///
+ public string RemoteEndpoint { get; set; }
+
+ ///
+ /// 关闭代码
+ ///
+ public int CloseCode { get; set; }
+
+ ///
+ /// 关闭原因
+ ///
+ public string CloseReason { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/Windows/CS/Framework4.0/CubeLib/CubeLib/WebSocket/WebSocketClient.cs b/Windows/CS/Framework4.0/CubeLib/CubeLib/WebSocket/WebSocketClient.cs
new file mode 100644
index 0000000..8ead3aa
--- /dev/null
+++ b/Windows/CS/Framework4.0/CubeLib/CubeLib/WebSocket/WebSocketClient.cs
@@ -0,0 +1,515 @@
+using System;
+using System.Collections.Generic;
+using System.Timers;
+using System.Threading;
+using WebSocketSharp;
+
+namespace JoyD.Windows.CS.WebSocket
+{
+ ///
+ /// WebSocket客户端实现
+ ///
+ public class WebSocketClient : IWebSocketClient
+ {
+ private WebSocketSharp.WebSocket _webSocket;
+ private WebSocketConfig _config;
+ private System.Timers.Timer _heartbeatTimer;
+ private System.Timers.Timer _reconnectTimer;
+ private System.Timers.Timer _connectTimeoutTimer;
+ private List