public async Task SendAsync(CSharpMessage message)
        {
            if (IsConnected)
            {
                message.From = _uniqueKey;

                await _hubConnection.SendAsync("SendAsync", message);
            }
            else
            {
                if (OnLostConnection == null)
                {
                    throw new CSharpException("Lost connection to server.");
                }
                else
                {
                    OnLostConnection.Invoke(this, message);
                }
            }
        }
예제 #2
0
        public override void Update(GameTime gameTime)
        {
            WasConnected = IsConnected;

            if (Started)
            {
                if (IsServer)
                {
                    NetIncomingMessage _msg;
                    while ((_msg = _Server.ReadMessage()) != null)
                    {
                        switch (_msg.MessageType)
                        {
                        case NetIncomingMessageType.Data:
                            var _incMsg = ReadMessage(_msg);
                            OnGotMessage?.Invoke(_incMsg);
                            break;

                        case NetIncomingMessageType.VerboseDebugMessage:
                        case NetIncomingMessageType.DebugMessage:
                        case NetIncomingMessageType.WarningMessage:
                        case NetIncomingMessageType.ErrorMessage:
                            Console.WriteLine(_msg.ReadString());
                            break;

                        default:
                            Console.WriteLine("Unhandled type: " + _msg.MessageType);
                            break;
                        }
                        _Server.Recycle(_msg);
                    }
                }
                else
                {
                    NetIncomingMessage _msg;
                    while ((_msg = _Client.ReadMessage()) != null)
                    {
                        switch (_msg.MessageType)
                        {
                        case NetIncomingMessageType.Data:
                            var _incMsg = ReadMessage(_msg);
                            OnGotMessage?.Invoke(_incMsg);
                            break;

                        case NetIncomingMessageType.VerboseDebugMessage:
                        case NetIncomingMessageType.DebugMessage:
                        case NetIncomingMessageType.WarningMessage:
                        case NetIncomingMessageType.ErrorMessage:
                            Console.WriteLine(_msg.ReadString());
                            break;

                        default:
                            Console.WriteLine("Unhandled type: " + _msg.MessageType);
                            break;
                        }
                        _Client.Recycle(_msg);
                    }
                }
            }

            if (IsConnected && !WasConnected)
            {
                OnNewConnection?.Invoke();
            }

            if (!IsConnected && WasConnected)
            {
                OnLostConnection?.Invoke();
            }
        }
 /// <summary>
 ///     Raise the lost connection event
 /// </summary>
 protected void LostConnection()
 {
     OnLostConnection?.Invoke(this, EventArgs.Empty);
 }