Service









How do I use Service
Below are practical examples compiled from projects for learning and reference purposes

Featured Snippets


File name: ChatGui.cs Copy
95     public void Update()
96     {
97         if (this.chatClient != null)
98         {
99             this.chatClient.Service(); // make sure to call this regularly! it limits effort internally, so calling often is ok!
100         }
101     }
File name: GUICustomAuth.cs Copy
81     void OnGUI()
82     {
83         if (PhotonNetwork.connected)
84         {
85             GUILayout.Label(PhotonNetwork.connectionStateDetailed.ToString());
86             return;
87         }
88
89
90         GUILayout.BeginArea(GuiRect);
91         switch (guiState)
92         {
93             case GuiState.AuthFailed:
94                 GUILayout.Label("Authentication Failed");
95
96                 GUILayout.Space(10);
97
98                 GUILayout.Label("Error message:\n'" + this.authDebugMessage + "'");
99
100                 GUILayout.Space(10);
101
102                 GUILayout.Label("For this demo set the Authentication URL in the Dashboard to:\nhttp://photon.webscript.io/auth-demo-equals");
103                 GUILayout.Label("That authentication-service has no user-database. It confirms any user if 'name equals password'.");
104                 GUILayout.Label("The error message comes from that service and can be customized.");
105
106                 GUILayout.Space(10);
107
108                 GUILayout.BeginHorizontal();
109                 if (GUILayout.Button("Back"))
110                 {
111                     SetStateAuthInput();
112                 }
113                 if (GUILayout.Button("Help"))
114                 {
115                     SetStateAuthHelp();
116                 }
117                 GUILayout.EndHorizontal();
118                 break;
119
120             case GuiState.AuthHelp:
121
122                 GUILayout.Label("By default, any player can connect to Photon.\n'Custom Authentication' can be enabled to reject players without valid user-account.");
123
124                 GUILayout.Label("The actual authentication must be done by a web-service which you host and customize. Example sourcecode for these services is available on the docs page.");
125
126                 GUILayout.Label("For this demo set the Authentication URL in the Dashboard to:\nhttp://photon.webscript.io/auth-demo-equals");
127                 GUILayout.Label("That authentication-service has no user-database. It confirms any user if 'name equals password'.");
128
129                 GUILayout.Space(10);
130                 if (GUILayout.Button("Configure Authentication (Dashboard)"))
131                 {
132                     Application.OpenURL("https://cloud.exitgames.com/dashboard");
133                 }
134                 if (GUILayout.Button("Authentication Docs"))
135                 {
136                     Application.OpenURL("https://doc.exitgames.com/en/pun/current/tutorials/pun-and-facebook-custom-authentication");
137                 }
138
139
140                 GUILayout.Space(10);
141                 if (GUILayout.Button("Back to input"))
142                 {
143                     SetStateAuthInput();
144                 }
145                 break;
146
147             case GuiState.AuthInput:
148
149                 GUILayout.Label("Authenticate yourself");
150
151                 GUILayout.BeginHorizontal();
152                 this.authName = GUILayout.TextField(this.authName, GUILayout.Width(Screen.width/4 - 5));
153                 GUILayout.FlexibleSpace();
154                 this.authToken = GUILayout.TextField(this.authToken, GUILayout.Width(Screen.width/4 - 5));
155                 GUILayout.EndHorizontal();
156
157
158                 if (GUILayout.Button("Authenticate"))
159                 {
160                     PhotonNetwork.AuthValues = new AuthenticationValues();
161                     PhotonNetwork.AuthValues.SetAuthParameters(this.authName, this.authToken);
162                     PhotonNetwork.ConnectUsingSettings("1.0");
163                 }
164
165                 GUILayout.Space(10);
166
167                 if (GUILayout.Button("Help", GUILayout.Width(100)))
168                 {
169                     SetStateAuthHelp();
170                 }
171
172                 break;
173         }
174
175         GUILayout.EndArea();
176     }
File name: AccountService.cs Copy
27     private Action registrationCallback; // optional (when using async reg)
File name: AccountService.cs Copy
42     public AccountService()
43     {
44         WebRequest.DefaultWebProxy = null;
45         ServicePointManager.ServerCertificateValidationCallback = Validator;
46     }
File name: AccountService.cs Copy
59     public void RegisterByEmail(string email, Origin origin)
60     {
61         this.registrationCallback = null;
62         this.AppId = string.Empty;
63         this.Message = string.Empty;
64         this.ReturnCode = -1;
65
66         string result;
67         try
68         {
69             WebRequest req = HttpWebRequest.Create(this.RegistrationUri(email, (byte)origin));
70             HttpWebResponse resp = req.GetResponse() as HttpWebResponse;
71
72             // now read result
73             StreamReader reader = new StreamReader(resp.GetResponseStream());
74             result = reader.ReadToEnd();
75         }
76         catch (Exception ex)
77         {
78             this.Message = "Failed to connect to Cloud Account Service. Please register via account website.";
79             this.Exception = ex;
80             return;
81         }
82
83         this.ParseResult(result);
84     }
File name: AccountService.cs Copy
93     public void RegisterByEmailAsync(string email, Origin origin, Action callback = null)
94     {
95         this.registrationCallback = callback;
96         this.AppId = string.Empty;
97         this.Message = string.Empty;
98         this.ReturnCode = -1;
99
100         try
101         {
102             HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(this.RegistrationUri(email, (byte)origin));
103             req.Timeout = 5000;
104             req.BeginGetResponse(this.OnRegisterByEmailCompleted, req);
105         }
106         catch (Exception ex)
107         {
108             this.Message = "Failed to connect to Cloud Account Service. Please register via account website.";
109             this.Exception = ex;
110             if (this.registrationCallback != null)
111             {
112                 this.registrationCallback(this);
113             }
114         }
115     }
File name: AccountService.cs Copy
121     private void OnRegisterByEmailCompleted(IAsyncResult ar)
122     {
123         try
124         {
125             HttpWebRequest request = (HttpWebRequest)ar.AsyncState;
126             HttpWebResponse response = request.EndGetResponse(ar) as HttpWebResponse;
127
128             if (response != null && response.StatusCode == HttpStatusCode.OK)
129             {
130                 // no error. use the result
131                 StreamReader reader = new StreamReader(response.GetResponseStream());
132                 string result = reader.ReadToEnd();
133
134                 this.ParseResult(result);
135             }
136             else
137             {
138                 // a response but some error on server. show message
139                 this.Message = "Failed to connect to Cloud Account Service. Please register via account website.";
140             }
141         }
142         catch (Exception ex)
143         {
144             // not even a response. show message
145             this.Message = "Failed to connect to Cloud Account Service. Please register via account website.";
146             this.Exception = ex;
147         }
148
149         if (this.registrationCallback != null)
150         {
151             this.registrationCallback(this);
152         }
153     }
File name: AccountService.cs Copy
161     private Uri RegistrationUri(string email, byte origin)
162     {
163         string emailEncoded = Uri.EscapeDataString(email);
164         string uriString = string.Format("{0}?email={1}&origin={2}", ServiceUrl, emailEncoded, origin);
165
166         return new Uri(uriString);
167     }
File name: AccountService.cs Copy
173     private void ParseResult(string result)
174     {
175         if (string.IsNullOrEmpty(result))
176         {
177             this.Message = "Server's response was empty. Please register through account website during this service interruption.";
178             return;
179         }
180
181         Dictionary values = JsonConvert.DeserializeObject>(result);
182         if (values == null)
183         {
184             this.Message = "Service temporarily unavailable. Please register through account website.";
185             return;
186         }
187
188         int returnCodeInt = -1;
189         string returnCodeString = string.Empty;
190         string message;
191
192         values.TryGetValue("ReturnCode", out returnCodeString);
193         values.TryGetValue("Message", out message);
194         int.TryParse(returnCodeString, out returnCodeInt);
195
196         this.ReturnCode = returnCodeInt;
197         if (returnCodeInt == 0)
198         {
199             // returnCode == 0 means: all ok. message is new AppId
200             this.AppId = message;
201         }
202         else
203         {
204             // any error gives returnCode != 0
205             this.AppId = string.Empty;
206             this.Message = message;
207         }
208     }
File name: PhotonEditor.cs Copy
792     protected virtual void RegisterWithEmail(string email)
793     {
794         EditorUtility.DisplayProgressBar(CurrentLang.ConnectionTitle, CurrentLang.ConnectionInfo, 0.5f);
795         var client = new AccountService();
796         client.RegisterByEmail(email, RegisterOrigin); // this is the synchronous variant using the static RegisterOrigin. "result" is in the client
797
798         EditorUtility.ClearProgressBar();
799         if (client.ReturnCode == 0)
800         {
801             PhotonEditor.Current.UseCloud(client.AppId, 0);
802             PhotonEditor.Save();
803             this.ReApplySettingsToWindow();
804             this.photonSetupState = PhotonSetupStates.SetupPhotonCloud;
805         }
806         else
807         {
808             if (client.Message.Contains(CurrentLang.EmailInUseLabel))
809             {
810                 this.photonSetupState = PhotonSetupStates.EmailAlreadyRegistered;
811             }
812             else
813             {
814                 EditorUtility.DisplayDialog(CurrentLang.ErrorTextTitle, client.Message, CurrentLang.OkButton);
815                 // Debug.Log(client.Exception);
816                 this.photonSetupState = PhotonSetupStates.RegisterForPhotonCloud;
817             }
818         }
819     }

Download file with original file name:Service

Service 162 lượt xem

Gõ tìm kiếm nhanh...