diff --git a/Example/Example.pidb b/Example/Example.pidb index f97c2a5f..78aeece3 100644 Binary files a/Example/Example.pidb and b/Example/Example.pidb differ diff --git a/Example/bin/Debug/example.exe b/Example/bin/Debug/example.exe index c85977ec..7f4bacc3 100755 Binary files a/Example/bin/Debug/example.exe and b/Example/bin/Debug/example.exe differ diff --git a/Example/bin/Debug/example.exe.mdb b/Example/bin/Debug/example.exe.mdb index 49165ddd..fdcdb6be 100644 Binary files a/Example/bin/Debug/example.exe.mdb and b/Example/bin/Debug/example.exe.mdb differ diff --git a/Example/bin/Debug/websocket-sharp.dll b/Example/bin/Debug/websocket-sharp.dll index b02b3b3f..dcb81762 100755 Binary files a/Example/bin/Debug/websocket-sharp.dll and b/Example/bin/Debug/websocket-sharp.dll differ diff --git a/Example/bin/Debug/websocket-sharp.dll.mdb b/Example/bin/Debug/websocket-sharp.dll.mdb index 8747511f..49c49bf0 100644 Binary files a/Example/bin/Debug/websocket-sharp.dll.mdb and b/Example/bin/Debug/websocket-sharp.dll.mdb differ diff --git a/Example/bin/Debug_Ubuntu/example.exe b/Example/bin/Debug_Ubuntu/example.exe index 8c33fead..652ce166 100755 Binary files a/Example/bin/Debug_Ubuntu/example.exe and b/Example/bin/Debug_Ubuntu/example.exe differ diff --git a/Example/bin/Debug_Ubuntu/example.exe.mdb b/Example/bin/Debug_Ubuntu/example.exe.mdb index ae9e1719..653e7376 100644 Binary files a/Example/bin/Debug_Ubuntu/example.exe.mdb and b/Example/bin/Debug_Ubuntu/example.exe.mdb differ diff --git a/Example/bin/Debug_Ubuntu/websocket-sharp.dll b/Example/bin/Debug_Ubuntu/websocket-sharp.dll index cdff603e..e47edd9f 100755 Binary files a/Example/bin/Debug_Ubuntu/websocket-sharp.dll and b/Example/bin/Debug_Ubuntu/websocket-sharp.dll differ diff --git a/Example/bin/Debug_Ubuntu/websocket-sharp.dll.mdb b/Example/bin/Debug_Ubuntu/websocket-sharp.dll.mdb index 05a65ab3..2fc82474 100644 Binary files a/Example/bin/Debug_Ubuntu/websocket-sharp.dll.mdb and b/Example/bin/Debug_Ubuntu/websocket-sharp.dll.mdb differ diff --git a/Example/bin/Release/example.exe b/Example/bin/Release/example.exe index a2af80a4..811b55ac 100755 Binary files a/Example/bin/Release/example.exe and b/Example/bin/Release/example.exe differ diff --git a/Example/bin/Release/websocket-sharp.dll b/Example/bin/Release/websocket-sharp.dll index fb10516d..c9e0610a 100755 Binary files a/Example/bin/Release/websocket-sharp.dll and b/Example/bin/Release/websocket-sharp.dll differ diff --git a/Example/bin/Release_Ubuntu/example.exe b/Example/bin/Release_Ubuntu/example.exe index 28fce593..47576c65 100755 Binary files a/Example/bin/Release_Ubuntu/example.exe and b/Example/bin/Release_Ubuntu/example.exe differ diff --git a/Example/bin/Release_Ubuntu/websocket-sharp.dll b/Example/bin/Release_Ubuntu/websocket-sharp.dll index 8b2eaf7e..04a4870d 100755 Binary files a/Example/bin/Release_Ubuntu/websocket-sharp.dll and b/Example/bin/Release_Ubuntu/websocket-sharp.dll differ diff --git a/Example1/bin/Debug/example1.exe b/Example1/bin/Debug/example1.exe index 80cca4be..f854ffb5 100755 Binary files a/Example1/bin/Debug/example1.exe and b/Example1/bin/Debug/example1.exe differ diff --git a/Example1/bin/Debug/example1.exe.mdb b/Example1/bin/Debug/example1.exe.mdb index c67610d1..1334f6fe 100644 Binary files a/Example1/bin/Debug/example1.exe.mdb and b/Example1/bin/Debug/example1.exe.mdb differ diff --git a/Example1/bin/Debug/websocket-sharp.dll b/Example1/bin/Debug/websocket-sharp.dll index b02b3b3f..dcb81762 100755 Binary files a/Example1/bin/Debug/websocket-sharp.dll and b/Example1/bin/Debug/websocket-sharp.dll differ diff --git a/Example1/bin/Debug/websocket-sharp.dll.mdb b/Example1/bin/Debug/websocket-sharp.dll.mdb index 8747511f..49c49bf0 100644 Binary files a/Example1/bin/Debug/websocket-sharp.dll.mdb and b/Example1/bin/Debug/websocket-sharp.dll.mdb differ diff --git a/Example1/bin/Debug_Ubuntu/example1.exe b/Example1/bin/Debug_Ubuntu/example1.exe index ab05af2d..fddb602e 100755 Binary files a/Example1/bin/Debug_Ubuntu/example1.exe and b/Example1/bin/Debug_Ubuntu/example1.exe differ diff --git a/Example1/bin/Debug_Ubuntu/example1.exe.mdb b/Example1/bin/Debug_Ubuntu/example1.exe.mdb index f37143be..79b43cf3 100644 Binary files a/Example1/bin/Debug_Ubuntu/example1.exe.mdb and b/Example1/bin/Debug_Ubuntu/example1.exe.mdb differ diff --git a/Example1/bin/Debug_Ubuntu/websocket-sharp.dll b/Example1/bin/Debug_Ubuntu/websocket-sharp.dll index cdff603e..e47edd9f 100755 Binary files a/Example1/bin/Debug_Ubuntu/websocket-sharp.dll and b/Example1/bin/Debug_Ubuntu/websocket-sharp.dll differ diff --git a/Example1/bin/Debug_Ubuntu/websocket-sharp.dll.mdb b/Example1/bin/Debug_Ubuntu/websocket-sharp.dll.mdb index 05a65ab3..2fc82474 100644 Binary files a/Example1/bin/Debug_Ubuntu/websocket-sharp.dll.mdb and b/Example1/bin/Debug_Ubuntu/websocket-sharp.dll.mdb differ diff --git a/Example1/bin/Release/example1.exe b/Example1/bin/Release/example1.exe index f30ecd63..b4c2bd1c 100755 Binary files a/Example1/bin/Release/example1.exe and b/Example1/bin/Release/example1.exe differ diff --git a/Example1/bin/Release/websocket-sharp.dll b/Example1/bin/Release/websocket-sharp.dll index fb10516d..c9e0610a 100755 Binary files a/Example1/bin/Release/websocket-sharp.dll and b/Example1/bin/Release/websocket-sharp.dll differ diff --git a/Example1/bin/Release_Ubuntu/example1.exe b/Example1/bin/Release_Ubuntu/example1.exe index 4c5bef5f..5455ac05 100755 Binary files a/Example1/bin/Release_Ubuntu/example1.exe and b/Example1/bin/Release_Ubuntu/example1.exe differ diff --git a/Example1/bin/Release_Ubuntu/websocket-sharp.dll b/Example1/bin/Release_Ubuntu/websocket-sharp.dll index 8b2eaf7e..04a4870d 100755 Binary files a/Example1/bin/Release_Ubuntu/websocket-sharp.dll and b/Example1/bin/Release_Ubuntu/websocket-sharp.dll differ diff --git a/Example2/Example2.pidb b/Example2/Example2.pidb index a908ca53..1afdf50e 100644 Binary files a/Example2/Example2.pidb and b/Example2/Example2.pidb differ diff --git a/Example2/bin/Debug/example2.exe b/Example2/bin/Debug/example2.exe index 14891358..02d90595 100755 Binary files a/Example2/bin/Debug/example2.exe and b/Example2/bin/Debug/example2.exe differ diff --git a/Example2/bin/Debug/example2.exe.mdb b/Example2/bin/Debug/example2.exe.mdb index bcf6cbd5..4b3fc658 100644 Binary files a/Example2/bin/Debug/example2.exe.mdb and b/Example2/bin/Debug/example2.exe.mdb differ diff --git a/Example2/bin/Debug/websocket-sharp.dll b/Example2/bin/Debug/websocket-sharp.dll index b02b3b3f..dcb81762 100755 Binary files a/Example2/bin/Debug/websocket-sharp.dll and b/Example2/bin/Debug/websocket-sharp.dll differ diff --git a/Example2/bin/Debug/websocket-sharp.dll.mdb b/Example2/bin/Debug/websocket-sharp.dll.mdb index 8747511f..49c49bf0 100644 Binary files a/Example2/bin/Debug/websocket-sharp.dll.mdb and b/Example2/bin/Debug/websocket-sharp.dll.mdb differ diff --git a/Example2/bin/Debug_Ubuntu/example2.exe b/Example2/bin/Debug_Ubuntu/example2.exe index db5ddd3a..e741ad70 100755 Binary files a/Example2/bin/Debug_Ubuntu/example2.exe and b/Example2/bin/Debug_Ubuntu/example2.exe differ diff --git a/Example2/bin/Debug_Ubuntu/example2.exe.mdb b/Example2/bin/Debug_Ubuntu/example2.exe.mdb index 319e9963..059c97c9 100644 Binary files a/Example2/bin/Debug_Ubuntu/example2.exe.mdb and b/Example2/bin/Debug_Ubuntu/example2.exe.mdb differ diff --git a/Example2/bin/Debug_Ubuntu/websocket-sharp.dll b/Example2/bin/Debug_Ubuntu/websocket-sharp.dll index cdff603e..e47edd9f 100755 Binary files a/Example2/bin/Debug_Ubuntu/websocket-sharp.dll and b/Example2/bin/Debug_Ubuntu/websocket-sharp.dll differ diff --git a/Example2/bin/Debug_Ubuntu/websocket-sharp.dll.mdb b/Example2/bin/Debug_Ubuntu/websocket-sharp.dll.mdb index 05a65ab3..2fc82474 100644 Binary files a/Example2/bin/Debug_Ubuntu/websocket-sharp.dll.mdb and b/Example2/bin/Debug_Ubuntu/websocket-sharp.dll.mdb differ diff --git a/Example2/bin/Release/example2.exe b/Example2/bin/Release/example2.exe index f9119f9e..f5e3a3b9 100755 Binary files a/Example2/bin/Release/example2.exe and b/Example2/bin/Release/example2.exe differ diff --git a/Example2/bin/Release/websocket-sharp.dll b/Example2/bin/Release/websocket-sharp.dll index fb10516d..c9e0610a 100755 Binary files a/Example2/bin/Release/websocket-sharp.dll and b/Example2/bin/Release/websocket-sharp.dll differ diff --git a/Example2/bin/Release_Ubuntu/example2.exe b/Example2/bin/Release_Ubuntu/example2.exe index 417ab599..08dccde4 100755 Binary files a/Example2/bin/Release_Ubuntu/example2.exe and b/Example2/bin/Release_Ubuntu/example2.exe differ diff --git a/Example2/bin/Release_Ubuntu/websocket-sharp.dll b/Example2/bin/Release_Ubuntu/websocket-sharp.dll index 8b2eaf7e..04a4870d 100755 Binary files a/Example2/bin/Release_Ubuntu/websocket-sharp.dll and b/Example2/bin/Release_Ubuntu/websocket-sharp.dll differ diff --git a/websocket-sharp/Server/IWebSocketServer.cs b/websocket-sharp/Server/IWebSocketServer.cs index 8a3150a5..1afbd5b3 100644 --- a/websocket-sharp/Server/IWebSocketServer.cs +++ b/websocket-sharp/Server/IWebSocketServer.cs @@ -27,6 +27,7 @@ #endregion using System; +using System.Collections.Generic; using WebSocketSharp.Frame; namespace WebSocketSharp.Server @@ -35,13 +36,14 @@ namespace WebSocketSharp.Server { WsServerState State { get; } - void AddService(WebSocketService service); - void CloseServices(CloseStatusCode code, string reason); - void Ping(string data); - void Publish(byte[] data); - void Publish(string data); - void RemoveService(WebSocketService service); + void AddService(string id, WebSocketService service); + Dictionary PingAround(string data); + void Publish(TData data); + void RemoveService(string id); + void SendTo(string id, TData data); + void SendTo(IEnumerable group, TData data); void Start(); void Stop(); + void StopServices(CloseStatusCode code, string reason); } } diff --git a/websocket-sharp/Server/WebSocketServer.cs b/websocket-sharp/Server/WebSocketServer.cs index ae8879bf..4e82a3d3 100644 --- a/websocket-sharp/Server/WebSocketServer.cs +++ b/websocket-sharp/Server/WebSocketServer.cs @@ -29,6 +29,7 @@ #endregion using System; +using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Net; @@ -44,10 +45,11 @@ namespace WebSocketSharp.Server { #region Private Fields - private SynchronizedCollection _services; - private WsServerState _state; - private TcpListener _tcpListener; - private Uri _uri; + private object _forServices; + private Dictionary _services; + private WsServerState _state; + private TcpListener _tcpListener; + private Uri _uri; #endregion @@ -91,9 +93,11 @@ namespace WebSocketSharp.Server public WebSocketServer(string url) { _uri = new Uri(url); + if (!isValidScheme(_uri)) { - throw new ArgumentException("Unsupported WebSocket URI scheme: " + _uri.Scheme); + var msg = "Unsupported WebSocket URI scheme: " + _uri.Scheme; + throw new ArgumentException(msg); } string scheme = _uri.Scheme; @@ -112,7 +116,8 @@ namespace WebSocketSharp.Server } _tcpListener = new TcpListener(IPAddress.Any, port); - _services = new SynchronizedCollection(); + _forServices = new object(); + _services = new Dictionary(); _state = WsServerState.READY; } @@ -132,10 +137,10 @@ namespace WebSocketSharp.Server try { TcpClient client = listener.EndAcceptTcpClient(ar); - WebSocket socket = new WebSocket(_uri.ToString(), client); + WebSocket socket = new WebSocket(_uri, client); T service = new T(); service.Bind(this, socket); - service.Open(); + service.Start(); } catch (ObjectDisposedException) { @@ -175,80 +180,99 @@ namespace WebSocketSharp.Server #region Public Methods - public void AddService(WebSocketService service) + public void AddService(string id, WebSocketService service) { - _services.Add(service); - } - - public void CloseServices() - { - CloseServices(CloseStatusCode.NORMAL, String.Empty); - } - - public void CloseServices(CloseStatusCode code, string reason) - { - lock (_services.SyncRoot) + lock (_forServices) { - foreach (WebSocketService service in _services) + _services.Add(id, service); + } + } + + public Dictionary PingAround() + { + return PingAround(String.Empty); + } + + public Dictionary PingAround(string data) + { + var result = new Dictionary(); + + lock (_forServices) + { + foreach (WebSocketService service in _services.Values) { - service.Close(code, reason); + result.Add(service.ID, service.Ping(data)); + } + } + + return result; + } + + public void Publish(TData data) + { + WaitCallback broadcast = (state) => + { + lock (_forServices) + { + SendTo(_services.Keys, data); + } + }; + ThreadPool.QueueUserWorkItem(broadcast); + } + + public void RemoveService(string id) + { + lock (_forServices) + { + _services.Remove(id); + } + } + + public void SendTo(string id, TData data) + { + if (typeof(TData) != typeof(string) && + typeof(TData) != typeof(byte[])) + { + var msg = "Type of data must be string or byte[]."; + throw new ArgumentException(msg); + } + + lock (_forServices) + { + WebSocketService service; + + if (_services.TryGetValue(id, out service)) + { + if (typeof(TData) == typeof(string)) + { + string data_ = (string)(object)data; + service.Send(data_); + } + else if (typeof(TData) == typeof(byte[])) + { + byte[] data_ = (byte[])(object)data; + service.Send(data_); + } } } } - public void Ping() + public void SendTo(IEnumerable group, TData data) { - Ping(String.Empty); - } - - public void Ping(string data) - { - WaitCallback broadcast = (state) => + if (typeof(TData) != typeof(string) && + typeof(TData) != typeof(byte[])) { - lock (_services.SyncRoot) - { - foreach (WebSocketService service in _services) - { - service.Ping(data); - } - } - }; - ThreadPool.QueueUserWorkItem(broadcast); - } + var msg = "Type of data must be string or byte[]."; + throw new ArgumentException(msg); + } - public void Publish(byte[] data) - { - WaitCallback broadcast = (state) => + lock (_forServices) { - lock (_services.SyncRoot) + foreach (string id in group) { - foreach (WebSocketService service in _services) - { - service.Send(data); - } + SendTo(id, data); } - }; - ThreadPool.QueueUserWorkItem(broadcast); - } - - public void Publish(string data) - { - WaitCallback broadcast = (state) => - { - lock (_services.SyncRoot) - { - foreach (WebSocketService service in _services) - { - service.Send(data); - } - } - }; - ThreadPool.QueueUserWorkItem(broadcast); - } - - public void RemoveService(WebSocketService service) - { - _services.Remove(service); + } } public void Start() @@ -263,11 +287,27 @@ namespace WebSocketSharp.Server _state = WsServerState.SHUTDOWN; _tcpListener.Stop(); - CloseServices(); + StopServices(); _state = WsServerState.STOP; } + public void StopServices() + { + StopServices(CloseStatusCode.NORMAL, String.Empty); + } + + public void StopServices(CloseStatusCode code, string reason) + { + lock (_forServices) + { + foreach (WebSocketService service in _services.Values) + { + service.Stop(code, reason); + } + } + } + #endregion } } diff --git a/websocket-sharp/Server/WebSocketService.cs b/websocket-sharp/Server/WebSocketService.cs index 475e9579..1af03dd7 100644 --- a/websocket-sharp/Server/WebSocketService.cs +++ b/websocket-sharp/Server/WebSocketService.cs @@ -27,6 +27,7 @@ #endregion using System; +using System.Collections.Generic; using WebSocketSharp.Frame; namespace WebSocketSharp.Server @@ -40,9 +41,10 @@ namespace WebSocketSharp.Server #endregion - #region Property + #region Properties - public bool IsBound { get; private set; } + public string ID { get; private set; } + public bool IsBound { get; private set; } #endregion @@ -50,6 +52,7 @@ namespace WebSocketSharp.Server public WebSocketService() { + ID = String.Empty; IsBound = false; } @@ -57,18 +60,24 @@ namespace WebSocketSharp.Server #region Private Method + private string getNewID() + { + return Guid.NewGuid().ToString("N"); + } + private void defaultBind() { _socket.OnOpen += (sender, e) => { - _server.AddService(this); + ID = getNewID(); + _server.AddService(ID, this); }; _socket.OnClose += (sender, e) => { if (_server.State == WsServerState.START) { - _server.RemoveService(this); + _server.RemoveService(ID); } }; } @@ -111,47 +120,30 @@ namespace WebSocketSharp.Server IsBound = true; } - public void BPing() + public Dictionary PingAround() { - BPing(String.Empty); + return PingAround(String.Empty); } - public void BPing(string data) + public Dictionary PingAround(string data) { - if (IsBound) _server.Ping(data); + if (IsBound) return _server.PingAround(data); + return null; } - public void Close() + public bool Ping() { - if (IsBound) _socket.Close(); + if (IsBound) return _socket.Ping(); + return false; } - public void Close(CloseStatusCode code, string reason) + public bool Ping(string data) { - if (IsBound) _socket.Close(code, reason); + if (IsBound) return _socket.Ping(data); + return false; } - public void Open() - { - if (IsBound) _socket.Connect(); - } - - public void Ping() - { - if (IsBound) _socket.Ping(); - } - - public void Ping(string data) - { - if (IsBound) _socket.Ping(data); - } - - public void Publish(byte[] data) - { - if (IsBound) _server.Publish(data); - } - - public void Publish(string data) + public void Publish(TData data) { if (IsBound) _server.Publish(data); } @@ -166,6 +158,31 @@ namespace WebSocketSharp.Server if (IsBound) _socket.Send(data); } + public void SendTo(string id, TData data) + { + if (IsBound) _server.SendTo(id, data); + } + + public void SendTo(IEnumerable group, TData data) + { + if (IsBound) _server.SendTo(group, data); + } + + public void Start() + { + if (IsBound) _socket.Connect(); + } + + public void Stop() + { + if (IsBound) _socket.Close(); + } + + public void Stop(CloseStatusCode code, string reason) + { + if (IsBound) _socket.Close(code, reason); + } + #endregion } } diff --git a/websocket-sharp/WebSocket.cs b/websocket-sharp/WebSocket.cs index 61663106..b64f50ee 100644 --- a/websocket-sharp/WebSocket.cs +++ b/websocket-sharp/WebSocket.cs @@ -61,9 +61,9 @@ namespace WebSocketSharp #region Private Fields - private AutoResetEvent _autoEvent; private string _base64key; private string _binaryType; + private AutoResetEvent _exitedMessageLoop; private string _extensions; private Object _forClose; private Object _forSend; @@ -190,15 +190,10 @@ namespace WebSocketSharp #region Internal Constructors - internal WebSocket(string url, TcpClient tcpClient) + internal WebSocket(Uri uri, TcpClient tcpClient) : this() { - _uri = new Uri(url); - if (!isValidScheme(_uri)) - { - throw new ArgumentException("Unsupported WebSocket URI scheme: " + _uri.Scheme); - } - + _uri = uri; _tcpClient = tcpClient; _isClient = false; } @@ -211,9 +206,11 @@ namespace WebSocketSharp : this() { _uri = new Uri(url); + if (!isValidScheme(_uri)) { - throw new ArgumentException("Unsupported WebSocket URI scheme: " + _uri.Scheme); + var msg = "Unsupported WebSocket URI scheme: " + _uri.Scheme; + throw new ArgumentException(msg); } _protocols = protocols.ToString(", "); @@ -346,11 +343,11 @@ namespace WebSocketSharp { if (_isClient) { - _msgThread.Join(5000); + _msgThread.Join(5 * 1000); } else { - _autoEvent.WaitOne(); + _exitedMessageLoop.WaitOne(5 * 1000); } } @@ -788,7 +785,7 @@ namespace WebSocketSharp } else { - _autoEvent.Set(); + _exitedMessageLoop.Set(); } } @@ -1118,7 +1115,7 @@ namespace WebSocketSharp } else { - _autoEvent = new AutoResetEvent(false); + _exitedMessageLoop = new AutoResetEvent(false); Action messageInvoker = () => { if (_readyState == WsState.OPEN) diff --git a/websocket-sharp/bin/Debug/websocket-sharp.dll b/websocket-sharp/bin/Debug/websocket-sharp.dll index b02b3b3f..dcb81762 100755 Binary files a/websocket-sharp/bin/Debug/websocket-sharp.dll and b/websocket-sharp/bin/Debug/websocket-sharp.dll differ diff --git a/websocket-sharp/bin/Debug/websocket-sharp.dll.mdb b/websocket-sharp/bin/Debug/websocket-sharp.dll.mdb index 8747511f..49c49bf0 100644 Binary files a/websocket-sharp/bin/Debug/websocket-sharp.dll.mdb and b/websocket-sharp/bin/Debug/websocket-sharp.dll.mdb differ diff --git a/websocket-sharp/bin/Debug_Ubuntu/websocket-sharp.dll b/websocket-sharp/bin/Debug_Ubuntu/websocket-sharp.dll index cdff603e..e47edd9f 100755 Binary files a/websocket-sharp/bin/Debug_Ubuntu/websocket-sharp.dll and b/websocket-sharp/bin/Debug_Ubuntu/websocket-sharp.dll differ diff --git a/websocket-sharp/bin/Debug_Ubuntu/websocket-sharp.dll.mdb b/websocket-sharp/bin/Debug_Ubuntu/websocket-sharp.dll.mdb index 05a65ab3..2fc82474 100644 Binary files a/websocket-sharp/bin/Debug_Ubuntu/websocket-sharp.dll.mdb and b/websocket-sharp/bin/Debug_Ubuntu/websocket-sharp.dll.mdb differ diff --git a/websocket-sharp/bin/Release/websocket-sharp.dll b/websocket-sharp/bin/Release/websocket-sharp.dll index fb10516d..c9e0610a 100755 Binary files a/websocket-sharp/bin/Release/websocket-sharp.dll and b/websocket-sharp/bin/Release/websocket-sharp.dll differ diff --git a/websocket-sharp/bin/Release_Ubuntu/websocket-sharp.dll b/websocket-sharp/bin/Release_Ubuntu/websocket-sharp.dll index 8b2eaf7e..04a4870d 100755 Binary files a/websocket-sharp/bin/Release_Ubuntu/websocket-sharp.dll and b/websocket-sharp/bin/Release_Ubuntu/websocket-sharp.dll differ diff --git a/websocket-sharp/websocket-sharp.pidb b/websocket-sharp/websocket-sharp.pidb index 489fcd44..632ec3c0 100644 Binary files a/websocket-sharp/websocket-sharp.pidb and b/websocket-sharp/websocket-sharp.pidb differ