Esempio n. 1
0
 /// <summary>
 /// 连接建立事件
 /// </summary>
 internal void HandleOpen()
 {
     try
     {
         var path           = _webSocketConnection.ConnectionInfo.Path;
         var match          = _options.UrlMapping.Match(path);
         var streamName     = match.Groups["streamName"].Value;
         var controllerName = match.Groups["controller"].Value;
         var query          = "";
         var idx            = path.IndexOf('?');
         if (idx != -1)
         {
             query = path.Substring(idx);
         }
         if (!_options._controllers.TryGetValue(controllerName.ToLower(), out var controllerType))
         {
             _webSocketConnection.Close();
         }
         _controller            = _options._serverOptions.ServerLifetime.Resolve(controllerType) as WebSocketController;
         _controller.Query      = HttpUtility.ParseQueryString(query);
         _controller.StreamName = streamName;
         _controller.Session    = this;
         _controller.OnConnect().ContinueWith(_ =>
         {
             _webSocketConnection.Close();
         }, TaskContinuationOptions.OnlyOnFaulted);;
     }
     catch
     {
         _webSocketConnection.Close();
     }
 }
Esempio n. 2
0
    void OnEnable()
    {
        WebSocketController mController = GetComponent <RoomTemplate>().webSocketController;

        if (mController == null)
        {
            enabled = false;
            Debug.LogWarning("尚未指定wsController");
            return;
        }


        if (string.IsNullOrEmpty(GetComponent <RoomTemplate>().roomName) || string.IsNullOrEmpty(GetComponent <RoomTemplate>().groupId))
        {
            Debug.LogError("roomName或groupId其中一項為空");
            Debug.LogError("roomName : " + GetComponent <RoomTemplate>().roomName);
            Debug.LogError("groupId:" + GetComponent <RoomTemplate>().groupId);
            enabled = false;
            return;
        }

        Debug.Log("開啟自動訂閱桌子 : " + GetComponent <RoomTemplate>().roomName);

        mController.openSocketEvent += HandleResubscribe;
        if (mController.webSocket != null && mController.webSocket.IsOpen)
        {
            HandleResubscribe();
        }
    }
Esempio n. 3
0
 internal ControllerInstance(String path, WebSocketController controller)
 {
     Controller = controller;
     Path       = path;
     Paths      = path.Split(new Char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
     Regex      = new Regex(path);
 }
Esempio n. 4
0
 internal void HandleClose()
 {
     if (_controller is IDisposable disp)
     {
         disp.Dispose();
     }
     _controller = null;
 }
Esempio n. 5
0
        protected override void Start()
        {
            timerController = new TimerController();
            timerController.Initialize();

            webSocketController = gameObject.AddComponent<WebSocketController>();

            var gameSparksUnity = GetComponent<GameSparksUnity>();
            GameSparksSettings.SetInstance(gameSparksUnity.settings);

            base.Start();
        }
Esempio n. 6
0
        public void Init()
        {
            Instance = this;
            WebSocketController websocket = new WebSocketController();

            websocket.Initialize();

            MapsManager m = new MapsManager();

            playerController = new PlayerController();

            SetMap(0);

            App.OnUpdate += Update;
            App.OnClick  += App_OnClick;
        }
		protected override void Start ()
		{

			
			timerController = new TimerController();
			timerController.Initialize();



			// Register crypto implementation
			GSInitializeCrypto();
			
			// Register socket implementation
			GSInitializeGSSocket();
			
			webSocketController = gameObject.AddComponent<WebSocketController>();

			var gameSparksUnity = GetComponent<GameSparksUnity>();
			GameSparksSettings.SetInstance(gameSparksUnity.settings);
            
			base.Start();

		}
        public void ManagerDashBoardCounts(string connectionString, Int32 accountId)
        {
            DataSet ds = new DataSet();

            try
            {
                Press3.DataAccessLayer.GetStudioXml managerDashBoardCounts = new DataAccessLayer.GetStudioXml(connectionString);
                ds = managerDashBoardCounts.ManagerDashBoardCounts(accountId);
                if (ds != null)
                {
                    helper.ParseDataSet(ds);
                    dynamic s            = helper.GetResponse();
                    JObject countsObject = ((s as JObject).SelectToken("Table") as JArray).First as JObject;
                    countsObject.Add("Channel_Name", "manager_" + accountId.ToString());
                    WebSocketController wsObj = new WebSocketController(connectionString);
                    wsObj.InsertWsNofificationQueue(countsObject.ToString());
                    countsObject.Add(new JProperty("CallEvent", httpParameters.Event));

                    Logger.Debug("Sending data to manager dashBoard with account ID:" + accountId + ",With Data:" + countsObject.ToString());
                }
            }catch (Exception e) {
                Logger.Error("Exception while inserting ManagerCounts into WebSocket." + e.ToString());
            }
        }
Esempio n. 9
0
 public void SetController(WebSocketController controller)
 {
     this.controller = controller;
     controllerName = this.controller.GSName;
     controller.AddWebSocket(this);
 }
Esempio n. 10
0
 internal DataBuffer(WebSocketController _controller, WebSocketMessageType type, Stream _stream)
 {
     Type       = type;
     controller = _controller;
     stream     = _stream;
 }
Esempio n. 11
0
 public void SetController(WebSocketController controller)
 {
     this.controller = controller;
     this.controller.AddWebSocket(this);
     GSSocketInitialize(SocketId, controller.name);
 }
Esempio n. 12
0
 protected void Application_Start()
 {
     WebSocketController.Connect();//开启websocket连接
     GlobalConfiguration.Configure(WebApiConfig.Register);
     log4net.Config.XmlConfigurator.Configure();
 }
        public void AddBindings(Method[] methods, string rootUri, ushort port)
        {
            methods.ForEach(method => Handle.CUSTOM
                            (
                                port: port,
                                methodSpaceUri: $"{method} {rootUri}{{?}}",
                                handler: (Request scRequest, string uri) =>
            {
                var headers = new Headers(scRequest.HeadersDictionary);
                var client  = GetClient(scRequest);
                if (!client.TryAuthenticate(ref uri, headers, out var error))
                {
                    return(ToResponse(error));
                }
                var context = new ScContext(client, scRequest);
                using (var request = context.CreateRequest(uri, method, scRequest.BodyBytes, headers))
                {
                    switch (request.Evaluate().Serialize())
                    {
                    case WebSocketUpgradeSuccessful _: return(HandlerStatus.Handled);

                    case var result:
                        Admin.Console.Log(request, result);
                        return(ToResponse(result));
                    }
                }
            }
                            ));

            Handle.OPTIONS
            (
                port: port,
                uriTemplate: $"{rootUri}{{?}}",
                handler: (Request scRequest, string query) =>
            {
                var context = new ScContext(GetClient(scRequest), scRequest);
                var headers = new Headers(scRequest.HeadersDictionary);
                return(ToResponse(context.GetOptions(query, headers)));
            }
            );

            Handle.WebSocket
            (
                port: port,
                groupName: WsGroupName,
                handler: async(textInput, webSocket) =>
            {
                try
                {
                    await WebSocketController.HandleTextInput(ScWebSocket.GetRESTarWsId(webSocket), textInput);
                }
                catch (Exception e)
                {
                    webSocket.Send(e.Message);
                    webSocket.Disconnect();
                }
            }
            );

            Handle.WebSocket
            (
                port: port,
                groupName: WsGroupName,
                handler: (binaryInput, webSocket) =>
            {
                try
                {
                    WebSocketController.HandleBinaryInput(ScWebSocket.GetRESTarWsId(webSocket), binaryInput);
                }
                catch (Exception e)
                {
                    webSocket.Send(e.Message);
                    webSocket.Disconnect();
                }
            }
            );

            Handle.WebSocketDisconnect
            (
                port: port,
                groupName: WsGroupName,
                handler: webSocket =>
            {
                try
                {
                    WebSocketController.HandleDisconnect(ScWebSocket.GetRESTarWsId(webSocket));
                }
                catch { }
            }
            );
        }