Ejemplo n.º 1
0
        public override async Task ReceiveAsync(WebSocket socket, WebSocketReceiveResult result, byte[] buffer)
        {
            var socketid = WebSocketObjectHolder.GetId(socket);
            var message  = $"{socketid} said: {Encoding.UTF8.GetString(buffer, 0, result.Count)}";

            await SendMessageToAllAsync(message, AppConst.NON_BOM_UTF8_ENCORDING);
        }
Ejemplo n.º 2
0
        public override async Task ReceiveAsync(WebSocket socket, WebSocketReceiveResult result, byte[] buffer)
        {
            var socketid = WebSocketObjectHolder.GetId(socket);

            var message = AppConst.NON_BOM_UTF8_ENCORDING.GetString(buffer, 0, result.Count);

            await Task.CompletedTask;   // Todo: コマンド受信処理
        }
Ejemplo n.º 3
0
        public override async Task OnDisconnected(WebSocket socket)
        {
            var socketId = WebSocketObjectHolder.GetId(socket);

            await base.OnDisconnected(socket);

            await SendMessageToAllAsync($"{socketId} disconnected", AppConst.NON_BOM_UTF8_ENCORDING);
        }
Ejemplo n.º 4
0
        public override async Task OnConnected(WebSocket socket)
        {
            await base.OnConnected(socket);

            var socketid = WebSocketObjectHolder.GetId(socket);

            Console.WriteLine($"socket created: {socketid}");

            await Task.CompletedTask;
            //await SendMessageToAllAsync($"{socketid} is now connected", AppConst.NON_BOM_UTF8_ENCORDING);
        }
Ejemplo n.º 5
0
        public override async Task OnDisconnected(WebSocket client)
        {
            var socketId = WebSocketObjectHolder.GetId(client);

            await base.OnDisconnected(client);

            Console.WriteLine($"socket  closed: {socketId}");

            await Task.CompletedTask;

            //await SendMessageToAllAsync($"{socketId} disconnected", AppConst.NON_BOM_UTF8_ENCORDING);
        }
Ejemplo n.º 6
0
        public override async Task ReceiveAsync(WebSocket socket, WebSocketReceiveResult result, byte[] buffer)
        {
            var socketid = WebSocketObjectHolder.GetId(socket);

            var message = AppConst.NON_BOM_UTF8_ENCORDING.GetString(buffer, 0, result.Count);

            if (message.Length > 0)
            {
                try
                {
                    var request = JsonConvert.DeserializeObject <WebSocketRequest>(message);
                    Console.WriteLine(request.Cmd);
                    Console.WriteLine(request.Args);

                    switch (request.Cmd)
                    {
                    case (WebSocketCommands.SENSOR_RESET):
                        sensorCount = 0;
                        break;

                    case (WebSocketCommands.LOG_START):
                        LogStart();
                        break;

                    case (WebSocketCommands.LOG_STOP):
                        LogStopAndSave(request.Args.ToString());
                        break;

                    default:
                        break;
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.ToString());
                    //await socket.SendAsync(AppConst.NON_BOM_UTF8_ENCORDING.GetBytes(e.ToString()), WebSocketMessageType.Text, true, CancellationToken.None);
                }
            }



            await Task.CompletedTask;   // Todo: コマンド受信処理
        }
Ejemplo n.º 7
0
        public override async Task OnDisconnected(WebSocket socket)
        {
            var socketId = WebSocketObjectHolder.GetId(socket);
            await base.OnDisconnected(socket);

            Console.WriteLine($"socket  closed: {socketId}");

            if (WebSocketObjectHolder.Count <= 0)
            {
                StopLoggingTimer();
                StopSendTimer();

                Thread.Sleep(100);

                this.forceSensor.DisConnect();
                this.cfdLogger.DisConnect();
            }

            await Task.CompletedTask;
        }
Ejemplo n.º 8
0
        // WebSocket 関連イベント

        public override async Task OnConnected(WebSocket socket)
        {
            await base.OnConnected(socket);

            if (!cfdLogger.IsLogging)
            {
                cfdLogger.Connect(settings.CfdIP, settings.CfdPort);
            }

            if (!forceSensor.IsConnecting)
            {
                forceSensor.Connect();
            }

            StartSendTimer();

            var socketid = WebSocketObjectHolder.GetId(socket);

            Console.WriteLine($"socket created: {socketid}");

            await Task.CompletedTask;
        }
Ejemplo n.º 9
0
        public override async Task OnConnected(WebSocket client)
        {
            await base.OnConnected(client);

            var socketid = WebSocketObjectHolder.GetId(client);

            Console.WriteLine($"socket created: {socketid}");

            if (this.watchLoop == null)
            {
                this.watchLoop = Task.Run(async() =>
                {
                    Connect();
                    isStop = false;

                    while (!isStop)
                    {
                        this.socket.Send(this.sendMessage);

                        int receiveLength = socket.Receive(this.resBuffer);

                        flexData resData = null;

                        using (var ms = new System.IO.MemoryStream())
                        {
                            try
                            {
                                var length = ParseHeader(this.resBuffer, 0);
                                System.Diagnostics.Debug.WriteLine(length);
                                // ms.Write(res, 8, receiveLength - 8);
                                ms.Write(this.resBuffer, 8, length);
                                ms.Position = 0;

                                //Console.WriteLine(Encoding.UTF8.GetString(ms.GetBuffer()));

                                resData = (flexData)serializer.Deserialize(ms);

                                if (resData.notifications != null)
                                {
                                    resData.notifications.ToList().ForEach(n =>
                                    {
                                        Console.Error.WriteLine($"{n.code}: {n.message}");
                                    });

                                    Thread.Sleep(1000);
                                    continue;
                                }


                                var updateData = resData.dataExchange.dataUpdate[0].data[0].r;

                                await infoSemaphore.WaitAsync();
                                try
                                {
                                    this.robotInfo.Tcp.X     = (float)updateData[0];
                                    this.robotInfo.Tcp.Y     = (float)updateData[1];
                                    this.robotInfo.Tcp.Z     = (float)updateData[2];
                                    this.robotInfo.Tcp.Role  = (float)updateData[3];
                                    this.robotInfo.Tcp.Pitch = (float)updateData[4];
                                    this.robotInfo.Tcp.Yaw   = (float)updateData[5];
                                }
                                finally
                                {
                                    infoSemaphore.Release();
                                }

                                Thread.Sleep(5);
                            }
                            catch (System.Exception err)
                            {
                                Console.WriteLine(err.ToString());
                                Thread.Sleep(5000);
                                throw;
                            }
                            finally
                            {
                                ms.Dispose();
                            }
                        }
                    }
                });
            }

            Thread.Sleep(100);

            if (sendLoop == null)
            {
                this.sendLoop = Task.Run(async() =>
                {
                    isStop     = false;
                    string str = null;
                    while (!isStop)
                    {
                        await infoSemaphore.WaitAsync();
                        try
                        {
                            str = JsonConvert.SerializeObject(this.robotInfo);
                        }
                        finally
                        {
                            infoSemaphore.Release();
                        }

                        //Console.WriteLine(str);
                        await SendMessageToAllAsync(str, AppConst.NON_BOM_UTF8_ENCORDING);
                        Thread.Sleep(10);
                    }
                });
            }

            await Task.CompletedTask;
        }