/// <summary>
 /// Constructor
 /// </summary>
 /// <param name="loggerService">Record errors and information during program execution</param>
 /// <param name="wsService">Provide methods and events to communicate with websocket server</param>
 public MessageService(LoggerService loggerService, WebSocketService wsService)
 {
     LoggerService     = loggerService;
     WsService         = wsService;
     wsService.OnData += RecieveWsData;
     OnMessageHandlers = new List <Subscription>();
 }
        public void Connect_ServerExists_MessageEchoed()
        {
            // Arrange
            EchoWebSocketServer server = new EchoWebSocketServer();

            server.StartServer("0.0.0.0", 4040);

            WebSocketService service = new WebSocketService();

            string messageToSend   = "hello";
            string receivedMessage = string.Empty;

            service.MessageReceived += (message) =>
            {
                receivedMessage = message;
            };

            // Act
            service.Connect("ws://localhost:4040");
            service.Send(messageToSend);

            Thread.Sleep(100);

            // Assert
            Assert.Equal(messageToSend, receivedMessage);

            // Clean up
            server.Stop();
        }
Beispiel #3
0
 public ServerEventsViewModel(WebSocketService service)
 {
     Service             = service;
     Text                = "No action";
     Text2               = "1337";
     IsPercentageVisible = false;
 }
Beispiel #4
0
        public async Task LongTaskAsync(WebSocketService webSocketService, CancellationToken cancellationToken, string taskId)
        {
            for (int i = 1; i < 10; ++i)
            {
                await Task.Delay(2000);

                cancellationToken.ThrowIfCancellationRequested();
                if (i == 5)
                {
                    await webSocketService.SendSyncRequestToClient(taskId);
                }

                await webSocketService.ChangeViewModelForCurrentConnectionAsync((ServerEventsViewModel changes) =>
                {
                    changes.Text       = "task is running";
                    changes.Percentage = i;
                });

                await Task.Delay(2000);
            }


            await webSocketService.ChangeViewModelForCurrentConnectionAsync((ServerEventsViewModel changes) =>
            {
                changes.Text  = "Task is Complete";
                changes.Text2 = changes.Text2 + "Task is Complete";
                changes.IsPercentageVisible = false;
            });
        }
Beispiel #5
0
        /// <summary>
        /// Отклонить входящий заказ.
        /// </summary>
        /// <param name="orderId"></param>
        /// <returns></returns>
        public async Task RejectAsync(int courierId, int orderId)
        {
            var courierShiftHistory = await _courierShiftHistoryService.FindCurrentOrNextAsync(courierId);

            if (courierShiftHistory is null)
            {
                throw new AppException(AppMessage.UndefinedCourierShiftHistory);
            }

            //
            var order = await _dbContext.Orders.FirstOrDefaultAsync(x => x.Id == orderId);

            if (order.OrderStatusCode.IsFinal)
            {
                throw new AppException(AppMessage.OrderStatusIsCompleted);
            }

            order.CourierShiftHistoryId = null;
            order.CourierId             = null;
            order.OrderStatusCodeId     = (int)OrderStatusCode.CourierSelected;

            var incomingOrder = new IncomingOrderHistory()
            {
                CourierShiftHistoryId = courierShiftHistory.Id,
                OrderId   = orderId,
                StatusId  = (int)IncomingOrderStatuses.Rejected,
                UpdatedAt = DateTime.Now,
            };

            _dbContext.IncomingOrderHistories.Add(incomingOrder);

            await _dbContext.SaveChangesAsync();

            await WebSocketService.ShiftChanged(courierId);
        }
        private void ConfigureWebSockets(IApplicationBuilder app)
        {
            app.UseWebSockets();

            var webSocketOptions = new WebSocketOptions()
            {
                KeepAliveInterval = TimeSpan.FromSeconds(120),
                ReceiveBufferSize = 4 * 1024
            };

            //webSocketOptions.AllowedOrigins.Add("https://client.com");

            app.UseWebSockets(webSocketOptions);

            app.Use(async(context, next) =>
            {
                if (context.Request.Path == "/ws")
                {
                    if (context.WebSockets.IsWebSocketRequest)
                    {
                        WebSocket webSocket = await context.WebSockets.AcceptWebSocketAsync();
                        await WebSocketService.HandleConnection(context, webSocket);
                    }
                    else
                    {
                        context.Response.StatusCode = 400;
                    }
                }
                else
                {
                    await next();
                }
            });
        }
Beispiel #7
0
        static void Main()
        {
            WebServerLog.LogAdded += WebServerLog_LogAdded;
            var server = new Server(new WebServerSettings(8000, 5000));

            // add services
            server.AddWebService(new HttpRequestParser());
            server.AddWebService(new HttpHeaderPostParser());
            server.AddWebService(new HttpHeaderSpecialAction());
            server.AddWebService(new HttpResponseCreator());
            server.AddWebService(new HttpSender());
            // setup web socket
            var websocket = new WebSocketService();

            websocket.Add(new EchoEndpoint());
            server.AddWebService(websocket);
            // start server
            server.Start();
            // wait for console quit
            while (Console.ReadKey().Key != ConsoleKey.Q)
            {
                ;
            }
            // close
            server.Stop();
            websocket.Dispose();
        }
        public void Clear()
        {
            ID      = default(int);
            sClient = null;

            //User.Logout();

            User = null;
        }
Beispiel #9
0
    public static void Main (string[] args)
    {
        var wssv = new WebSocketService(81, false);
        wssv.Start();

        Console.WriteLine("\nPress Enter key to exit...");
        Console.ReadLine();

        wssv.Stop();
    }
        private void raiseSubscribingEvent(WebSocketService svc, SubscriptionContext Ctx)
        {
            var handler = Subscribing;

            if (handler != null)
            {
                handler(svc, new NotifyChannelEventArgs {
                    Ctx = Ctx
                });
            }
        }
Beispiel #11
0
 /// <summary>
 /// Disconnect from server
 /// </summary>
 /// <returns></returns>
 public async Task DisconnectAsync()
 {
     Working = true;
     try
     {
         await WebSocketService.CloseAsync();
     }
     finally
     {
         Working = false;
     }
 }
Beispiel #12
0
        /// <summary>
        /// Принять входящий заказ в работу.
        /// </summary>
        /// <param name="courierId"></param>
        /// <param name="orderId"></param>
        /// <returns></returns>
        public async Task <IncomingOrderDto> AcceptAsync(int courierId, int orderId)
        {
            var pendingOrder = await GetOrderIfPendingAsync(courierId, orderId);

            if (pendingOrder == null)
            {
                throw new AppException(new AppMessage(0, "Accept: Undefined error", HttpStatusCode.BadRequest));
            }

            var courierShiftHistory = await _courierShiftHistoryService.FindCurrentOrNextAsync(courierId);

            if (courierShiftHistory is null)
            {
                throw new AppException(AppMessage.UndefinedCourierShiftHistory);
            }

            //
            var order = await _dbContext.Orders.FirstOrDefaultAsync(x => x.Id == orderId);

            if (order.OrderStatusCode.IsFinal)
            {
                throw new AppException(AppMessage.OrderStatusIsCompleted);
            }

            order.CourierShiftHistoryId = courierShiftHistory.Id;
            order.OrderStatusCodeId     = (int)OrderStatusCode.CourierAccepted;

            var incomingOrder = new IncomingOrderHistory()
            {
                CourierShiftHistoryId = courierShiftHistory.Id,
                OrderId   = orderId,
                StatusId  = (int)IncomingOrderStatuses.Accepted,
                UpdatedAt = DateTime.Now,
            };

            _dbContext.IncomingOrderHistories.Add(incomingOrder);

            await _dbContext.SaveChangesAsync();

            await WebSocketService.ShiftChanged(courierId);

            // mocked
            return(new IncomingOrderDto()
            {
                Id = orderId,
                VendorLogo = pendingOrder.Vendor.Logo,
                ClientName = pendingOrder.Client.Name,
                Status = order.OrderStatusCode.Text,
                TotalCost = pendingOrder.TotalCost
            });
        }
Beispiel #13
0
        /// <summary>
        /// Constructor
        /// </summary>
        public App()
        {
            string connectionString;

            InitializeComponent();
#if __ANDROID__
            connectionString = "ws://10.0.2.2:5000/ws";
#else
            connectionString = "ws://localhost:5000/ws";
#endif
            connectionString = "ws://beforeourtime.world:2024/ws";
            // Required because of UWP 'release' build runtime error when traversing GetAssemblies()
            Message.GetMessageTypeDictionary();
            // Configure services
            var loggerService    = new LoggerService();
            var wsService        = new WebSocketService(loggerService, connectionString);
            var messageService   = new MessageService(loggerService, wsService);
            var itemService      = new ItemService(messageService);
            var accountService   = new AccountService(wsService, messageService);
            var characterService = new CharacterService(accountService, messageService);
            var gameService      = new GameService(accountService, messageService);
            var imageService     = new ImageService(messageService);
            var styleService     = new StyleService();
            // Configure Dependency Injection
            var builder = new ContainerBuilder();
            builder.RegisterInstance <ILoggerService>(loggerService).SingleInstance();
            builder.RegisterInstance <IWebSocketService>(wsService).SingleInstance();
            builder.RegisterInstance <IMessageService>(messageService).SingleInstance();
            builder.RegisterInstance <IItemService>(itemService).SingleInstance();
            builder.RegisterInstance <IAccountService>(accountService).SingleInstance();
            builder.RegisterInstance <ICharacterService>(characterService).SingleInstance();
            builder.RegisterInstance <IGameService>(gameService).SingleInstance();
            builder.RegisterInstance <IImageService>(imageService).SingleInstance();
            builder.RegisterInstance <IStyleService>(styleService).SingleInstance();
            Container = builder.Build();
            // Required because of UWP 'release' build runtime error when
            // traversing GetAssemblies()
            Message.GuidDictionaryErrors.ForEach(x =>
            {
                loggerService.Log(LogLevel.Error, x);
            });
            Resources = CreateStyles(styleService);
            // Setup main page
            MainPage = new NavigationPage(new ServerPage(Container))
            {
                BarBackgroundColor = Color.FromHex("606060"),
                BarTextColor       = Color.White,
                BackgroundColor    = Color.FromHex("202020")
            };
        }
Beispiel #14
0
        static void Main(string[] args)
        {
            var router = new MyRouter(new JSONSerializer());

            router.AddControllersFromAssemblies(typeof(Program).Assembly);

            using (var server = new WebSocketService <MySession>(8181, router, router))
            {
                Console.WriteLine("Running. Press 'q' to quit");
                while (Console.ReadLine() != "q")
                {
                }
            }
        }
Beispiel #15
0
        public void Stop()
        {
            if (wsb != null)
            {
                threadReConnect.Abort();
                threadReConnect = null;

                ThreadRecordPriceDiff.Abort();
                ThreadRecordPriceDiff = null;

                wsb.stop();
                wsb = null;
                wss = null;
            }
        }
        public OnlinePlayerService()
        {
            turnService     = Container.get<TurnService>();
            gameObserver    = Container.get<GameObserver>();
            socket          = Container.get<WebSocketService>();

            gameObserver.addListener("OnPlay", (message) => {
                Play play = ((Message<Play>) message).message;

                turnService.play(play);
            });

            gameObserver.addListener(Events.CARD_TO_TABLE, (message) => {
                Play play = (Play) message;

                if(play.player.playerType == PlayerType.LOCAL){
                    socket.sendMessage<Play>(new Message<Play>(
                        "Play",
                        play,
                        play.GetType().FullName
                    ));
                }

            });

            gameObserver.addListener("giveCards", (message) => {
                Room room = ((Message<Room>) message).message;

                turnService.currentRoom.players.ForEach((player) => {
                    var onPlayer = room.players.Find((play) => {
                        return play.id == player.id;
                    });

                    player.cards = onPlayer.cards;
                });
            });

            gameObserver.addListener("cardsToPlayers", (message) => {
                Room room = (Room) message;

                if (turnService.isMaster) {
                    socket.sendMessage<Room>(new Message<Room>("giveCards", room, room.GetType().FullName));
                }
            });
        }
        public void HandleMessage(WebSocketService svc, MessageEventArgs args)
        {
            var msg = JObject.Parse(args.Data);

            if (Ctx != null)
            {
                throw new WebsocketProtocol.ProtocolErrorException("already connected");
            }

            if (msg[PROPERTY_CONNECT] == null)
            {
                throw new WebsocketProtocol.ProtocolErrorException("connect is expected");
            }

            if (msg[PROPERTY_SUBSCRIBE] == null)
            {
                throw new WebsocketProtocol.ProtocolErrorException("subscribe is expected");
            }

            Ctx = new SubscriptionContext(
                msg[PROPERTY_CONNECT][PROPERTY_DEVICE_ID].Value <string>(),
                msg[PROPERTY_CONNECT][PROPERTY_DEVICE_NAME].Value <string>(),
                svc);

            var subsribe = msg[PROPERTY_SUBSCRIBE];

            if (subsribe[PROPERTY_FILES_FROM_SEQ] != null)
            {
                Ctx.subscribe_files = true;
                Ctx.files_from_seq  = subsribe[PROPERTY_FILES_FROM_SEQ].Value <long>();
            }

            if (subsribe[PROPERTY_LABELS] != null)
            {
                Ctx.subscribe_labels = subsribe[PROPERTY_LABELS].Value <bool>();
                Ctx.labels_from_seq  = (subsribe[PROPERTY_LABELS_FROM_SEQ] != null) ? subsribe[PROPERTY_LABELS_FROM_SEQ].Value <long>() : 0;
            }

            if (subsribe[PROPERTY_DEVICES] != null)
            {
                Ctx.subscribe_devices = subsribe[PROPERTY_DEVICES].Value <bool>();
            }

            raiseSubscribingEvent(svc, Ctx);
        }
        public static IApplicationBuilder UseRedisMessagingHub(this IApplicationBuilder app)
        {
            app.UseWebSockets();

            return(app.Use(async(context, next) =>
            {
                if (context.WebSockets.IsWebSocketRequest)
                {
                    WebSocketService webSocketService = context.RequestServices.GetService <WebSocketService>();

                    await webSocketService.StartSocketListener(context);
                }
                else
                {
                    await next.Invoke();
                }
            }));
        }
Beispiel #19
0
        public App()
        {
            InitializeComponent();
            restApiManager = new RestApiManager(new RestApiService());

            WebSocketService webSocketService;

            var templist = new List <ASyncSocket>();

            for (int i = 0; i < sources.Length; i++)
            {
                templist.Add(new ASyncSocket(sources[i].numericHostName, sources[i].port));
            }
            webSocketService = new WebSocketService(templist);
            webSocketManager = new WebSocketManager(webSocketService);

            MainPage = new MainPage();
        }
        /// <summary>
        /// Attempt to authenticate, enumerate account characters, and attach to default character
        /// </summary>
        /// <returns>True if ready to play, false if one or more steps were unsuccessful</returns>
        public async Task <bool> ConnectAsync()
        {
            var connected = false;

            if (WebSocketService.GetState() == WebSocketState.Open)
            {
                var loginState = GetState();
                if (GetState() == LoginState.Guest)
                {
                    var account = GetAccount();
                    if (account?.Id != null)
                    {
                        await LoginAsync(account.Name, account.Password);
                    }
                }
            }
            return(connected);
        }
Beispiel #21
0
        public async Task <NextStatus> UpdateStatus(int orderId, int statusId)
        {
            var order = await _dbContext.Orders
                        .FirstOrDefaultAsync(x => x.Id == orderId);

            if (order is null)
            {
                throw new AppException(AppMessage.OrderNotExists);
            }

            int currentOrderStatusCodeId = order.OrderStatusCodeId;
            int nextOrderStatusCodeId    = 0;

            if (order.OrderStatusCodeId == (int)OrderStatusCode.CourierAccepted)
            {
                currentOrderStatusCodeId = (int)OrderStatusCode.Prepared;
                nextOrderStatusCodeId    = (int)OrderStatusCode.Delivered;
            }
            else if (order.OrderStatusCodeId == (int)OrderStatusCode.Prepared)
            {
                currentOrderStatusCodeId = (int)OrderStatusCode.Delivered;
                nextOrderStatusCodeId    = -1;
            }

            order.OrderStatusCodeId = currentOrderStatusCodeId;
            await _dbContext.SaveChangesAsync();

            var nextOrderStatusCode = await GetOrderStatusCodeAsync(nextOrderStatusCodeId);

            if (nextOrderStatusCode is null)
            {
                return(null);
            }

            var nextStatus = new NextStatus
            {
                Id   = nextOrderStatusCode.Id,
                Name = nextOrderStatusCode.Text
            };

            await WebSocketService.ShiftChanged((int)order.CourierId);

            return(nextStatus);
        }
Beispiel #22
0
        public async Task Invoke(HttpContext httpContext)
        {
            if (httpContext.Request.Path == "/ws")
            {
                if (httpContext.WebSockets.IsWebSocketRequest)
                {
                    WebSocket webSocket = await httpContext.WebSockets.AcceptWebSocketAsync();

                    await WebSocketService.ProcessWebSocket(httpContext, webSocket, this._broker);
                }
                else
                {
                    httpContext.Response.StatusCode = 400;
                }
            }
            else
            {
                await _nextDelegate.Invoke(httpContext);
            }
        }
Beispiel #23
0
        static void Main()
        {
            var server = new Server(new WebServerSettings(8002, 5000));

            server.AddWebService(new HttpRequestParser());
            server.AddWebService(new HttpHeaderSpecialAction());
            server.AddWebService(new Http404Service());
            server.AddWebService(new HttpResponseCreator());
            server.AddWebService(new HttpSender());
            server.AddWebService(new TaskGame.SpecialFileService());

            var searcher = new HttpDocumentFinder();

            if (System.Diagnostics.Debugger.IsAttached)
            {
                searcher.Add(new HttpDocumentFinder.Rule("/content/", "../../../content/", false, true));
            }
            else
            {
                searcher.Add(new HttpDocumentFinder.Rule("/content/", "content/", false, true));
            }
            server.AddWebService(searcher);
            server.AddWebService(new HttpDirectoryMapper(false));

            using var webSocket = new WebSocketService();
            webSocket.Add(new TaskGame.GameEndpoint());
            server.AddWebService(webSocket);

            server.Start();

            while (Console.ReadKey().Key != ConsoleKey.Q)
            {
                ;
            }

            server.Stop();
        }
Beispiel #24
0
        public void Start()
        {
            if (wsb == null)
            {
                wss = new BuissnesServiceImpl();

                wsb = new WebSocketBase(SelectedUrl, wss);
                wsb.start();

                //var dict = new Dictionary<string, string>();
                //dict.Add("api_key", ConfigInfo.apiKey);
                //wsb.send("{\"event\":\"login\",\"parameters\":{\"api_key\":\"" + ConfigInfo.apiKey + "\",\"sign\":\"" + SignParams(dict) + "\"}}");//登录
                //wsb.send("{'event':'addChannel','channel':'ok_sub_futureusd_btc_ticker_this_week'}");
                //wsb.send("{'event':'addChannel','channel':'ok_sub_futureusd_btc_ticker_next_week'}");
                //wsb.send("{'event':'addChannel','channel':'ok_sub_futureusd_btc_ticker_quarter'}");
                ChangeChannel(WSChannelChangeType.Add, WSChannel.ThisWeekChannel);
                ChangeChannel(WSChannelChangeType.Add, WSChannel.NextWeekChannel);

                if (threadReConnect == null)
                {
                    threadReConnect = new Thread(new ThreadStart(Reconnect))
                    {
                        IsBackground = true
                    };
                    threadReConnect.Start();
                }

                if (ThreadRecordPriceDiff == null)
                {
                    ThreadRecordPriceDiff = new Thread(new ThreadStart(LogPriceDiff))
                    {
                        IsBackground = true
                    };
                    ThreadRecordPriceDiff.Start();
                }
            }
        }
Beispiel #25
0
        /// <summary>
        /// Creates a new ActiveMQ consumer in order to listen to incoming sensor measurements.
        /// </summary>
        /// <param name="configuration">Application configuration.</param>
        /// <param name="lifetime">Host application lifetime.</param>
        /// <param name="dataService">The data service.</param>
        /// <param name="webSocketService">The websocket service.</param>
        private void CreateQueueConsumer(IConfigurationSection configuration,
                                         IHostApplicationLifetime lifetime,
                                         DataService dataService,
                                         WebSocketService webSocketService)
        {
            _consumer = new Consumer(dataService, webSocketService);
            var thread = new Thread((Object stateInfo) => _consumer.Listen());

            string connectionString = configuration.GetValue <string>("ConnectionString");
            string queue            = configuration.GetValue <string>("Name");

            // Run the consumers in a specific order, to ensure the consumer always disconnects nicely.
            try
            {
                lifetime.ApplicationStopping.Register(() => _consumer.Disconnect());
                _consumer.Connect(connectionString, queue);
                thread.Start();
            }
            catch (Exception exception)
            {
                Console.Error.WriteLine($"Unable to start queue consumer: {exception.Message}");
                lifetime.StopApplication();
            }
        }
Beispiel #26
0
 /// <summary>
 /// Creates a new consumer.
 /// </summary>
 /// <param name="dataService">The data service.</param>
 /// <param name="webSocketService">The websocket service.</param>
 public Consumer(DataService dataService, WebSocketService webSocketService)
 {
     _dataService      = dataService;
     _webSocketService = webSocketService;
 }
 public LocalPlayerService()
 {
     gameObserver    = Container.get<GameObserver>();
     socket          = Container.get<WebSocketService>();
     turnService     = Container.get<TurnService>();
 }
Beispiel #28
0
 public HttpServer(CommandRunner commandRunner, RestService restService, WebSocketService webSocketService)
 {
     this.commandRunner    = commandRunner;
     this.restService      = restService;
     this.webSocketService = webSocketService;
 }
Beispiel #29
0
 private System.Timers.Timer t = new System.Timers.Timer(2000); //
 public WebSocketBase(string url,WebSocketService webService)
 {
     this.webService = webService;
     this.url = url;
 }
Beispiel #30
0
 public TurnService()
 {
     socket = Container.get<WebSocketService>();
     cardStrategy = Container.get<DataSourceStrategy<Card>>();
 }
Beispiel #31
0
 public InitGameState(WebSocketService webSocketService)
 {
     _webSocketService = webSocketService;
 }
Beispiel #32
0
 public Startup()
 {
     applicationContext = ApplicationContext.Global;
     webSocketService   = applicationContext.Resolve <WebSocketService>();
 }
Beispiel #33
0
 public WebSocketMiddleware(RequestDelegate next, WebSocketService webSocketService)
 {
     _next             = next;
     _webSocketService = webSocketService;
 }
Beispiel #34
0
 public MessagesController(IMessagesRepository messagesRepository, WebSocketService webSocketService)
 {
     _messagesRepository = messagesRepository;
     _webSocketService   = webSocketService;
 }
 public WebSocketBase(string url, WebSocketService webService)
 {
     this.webService = webService;
     this.url        = url;
 }