[Modify] Open, and then message

This commit is contained in:
sta 2015-12-04 17:41:13 +09:00
parent dc533278e9
commit 014df48806

View File

@ -82,7 +82,6 @@ namespace WebSocketSharp
private AutoResetEvent _exitReceiving; private AutoResetEvent _exitReceiving;
private Opcode _fopcode; private Opcode _fopcode;
private object _forConn; private object _forConn;
private object _forEvent;
private object _forMessageEventQueue; private object _forMessageEventQueue;
private object _forSend; private object _forSend;
private MemoryStream _fragmentsBuffer; private MemoryStream _fragmentsBuffer;
@ -971,7 +970,6 @@ namespace WebSocketSharp
_compression = CompressionMethod.None; _compression = CompressionMethod.None;
_cookies = new CookieCollection (); _cookies = new CookieCollection ();
_forConn = new object (); _forConn = new object ();
_forEvent = new object ();
_forSend = new object (); _forSend = new object ();
_messageEventQueue = new Queue<MessageEventArgs> (); _messageEventQueue = new Queue<MessageEventArgs> ();
_forMessageEventQueue = ((ICollection) _messageEventQueue).SyncRoot; _forMessageEventQueue = ((ICollection) _messageEventQueue).SyncRoot;
@ -1037,10 +1035,9 @@ namespace WebSocketSharp
private void open () private void open ()
{ {
_inMessage = true;
try { try {
startReceiving (); startReceiving ();
lock (_forEvent) {
try { try {
OnOpen.Emit (this, EventArgs.Empty); OnOpen.Emit (this, EventArgs.Empty);
} }
@ -1048,10 +1045,21 @@ namespace WebSocketSharp
processException (ex, "An exception has occurred during an OnOpen event."); processException (ex, "An exception has occurred during an OnOpen event.");
} }
} }
}
catch (Exception ex) { catch (Exception ex) {
processException (ex, "An exception has occurred while opening."); processException (ex, "An exception has occurred while opening.");
} }
MessageEventArgs e = null;
lock (_forMessageEventQueue) {
if (_messageEventQueue.Count == 0 || _readyState != WebSocketState.Open) {
_inMessage = false;
return;
}
e = _messageEventQueue.Dequeue ();
}
_message.BeginInvoke (e, ar => _message.EndInvoke (ar), null);
} }
private bool processCloseFrame (WebSocketFrame frame) private bool processCloseFrame (WebSocketFrame frame)