c# - Unity:SignalR 连接在编辑器中工作但在设备中不工作(apk)
问题描述
我是初学者,我已将 SignalR 连接到我的应用程序,它工作正常,它发送/接收数据。但一切都只在编辑器中工作,在构建(Android)之后出现第一个场景,仅此而已,按钮不起作用,它不会在日志中显示它连接到服务器。API 兼容级别 .NET Standard 2.0。请帮助我在互联网上找不到解决方案。如果我删除 SignalR 脚本,那么一切都会按原样显示。
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using Newtonsoft.Json;
using SignalR.Client._20.Hubs;
using UnityEngine;
using UnityEngine.UI;
using Users;
public class SignalRClient : MonoBehaviour {
private string URL = "[MY SERVER]";
private HubConnection _hubConnection = null;
private IHubProxy _hubProxy;
private Subscription _subscription;
private string _response;
public InputField Login;
public InputField Pass;
public Text testTExt;
public User user;
IEnumerator Start () {
UnityEngine.Debug.Log ("Start()");
yield return new WaitForSeconds (1);
UnityEngine.Debug.Log ("Start() 1 second.");
StartSignalR ();
}
void StartSignalR () {
UnityEngine.Debug.Log ("StartSignalR");
if (_hubConnection == null) {
_hubConnection = new HubConnection (URL);
UnityEngine.Debug.Log ("URL: " + URL);
_hubConnection.Error += hubConnection_Error;
_hubProxy = _hubConnection.CreateProxy ("ChatHub");
Subscription subscription = _hubProxy.Subscribe ("broadcastMessage");
subscription.Data += Subscription_Data;
UnityEngine.Debug.Log ("HubConnection Start ");
_hubConnection.Start();
} else {
UnityEngine.Debug.Log ("SignalR already connected... ");
}
}
private void Subscription_Data (object[] obj) {
User user =
JsonConvert.DeserializeObject<User>(obj[0].ToString());
UnityEngine.Debug.Log("Object: ID->" + user.Id + " Login->" + user.login + "Password->" + user.password);
_response = user.Id + ": " + user.login + " ";
}
private void hubConnection_Error (System.Exception obj) {
UnityEngine.Debug.Log ("Hub Error - " + obj.Message +
System.Environment.NewLine + obj.Data +
System.Environment.NewLine + obj.StackTrace +
System.Environment.NewLine + obj.TargetSite);
}
private void hubConnection_Closed () {
UnityEngine.Debug.Log ("Hub Connection Closed ");
}
public void SendMessage () {
User user = new User(){
Id = 0,
login = Login.text,
password = Pass.text
};
_hubProxy.Invoke ("send", user);
}
private void OnApplicationQuit () {
UnityEngine.Debug.Log ("Application Exit " + Time.time + " seconds ");
_hubConnection.Error -= hubConnection_Error;
_hubConnection.Stop();
}
void Update () {
testTExt.text = _response;
}
}
解决方案
推荐阅读
- java - 带有 JPARepository (MySQL) 的 Spring Boot App 无法启动
- google-api - 如何在 google play 开发者 API 中检测 google play 订阅费?
- python - 如何安装“SpaCy”库而不出现此错误?
- python - ImportError:没有名为 newbytes 的模块
- php - 将带有自连接的原始 sql 查询翻译为学说 queryBuilder 查询
- solr - 预定义的读取权限不起作用 solr
- css - 如何在css中制作这个点菜单?
- video-streaming - 流媒体服务如何运作?
- c++ - 如何在 cout 中添加变量?
- flutter - 未定义的名称“颜色”。在 Flutter 中使用 TextStyle 类时