91 lines
2.4 KiB
C#

#if !BESTHTTP_DISABLE_SIGNALR
using System;
using UnityEngine;
using BestHTTP.SignalR;
namespace BestHTTP.Examples
{
public sealed class SimpleStreamingSample : MonoBehaviour
{
readonly Uri URI = new Uri(GUIHelper.BaseURL + "/streaming-connection");
/// <summary>
/// Reference to the SignalR Connection
/// </summary>
Connection signalRConnection;
/// <summary>
/// Helper GUI class to handle and display a string-list
/// </summary>
GUIMessageList messages = new GUIMessageList();
#region Unity Events
void Start()
{
// Create the SignalR connection
signalRConnection = new Connection(URI);
// set event handlers
signalRConnection.OnNonHubMessage += signalRConnection_OnNonHubMessage;
signalRConnection.OnStateChanged += signalRConnection_OnStateChanged;
signalRConnection.OnError += signalRConnection_OnError;
// Start connecting to the server
signalRConnection.Open();
}
void OnDestroy()
{
// Close the connection when the sample is closed
signalRConnection.Close();
}
void OnGUI()
{
GUIHelper.DrawArea(GUIHelper.ClientArea, true, () =>
{
GUILayout.Label("Messages");
GUILayout.BeginHorizontal();
GUILayout.Space(20);
messages.Draw(Screen.width - 20, 0);
GUILayout.EndHorizontal();
});
}
#endregion
#region SignalR Events
/// <summary>
/// Handle Server-sent messages
/// </summary>
void signalRConnection_OnNonHubMessage(Connection connection, object data)
{
messages.Add("[Server Message] " + data.ToString());
}
/// <summary>
/// Display state changes
/// </summary>
void signalRConnection_OnStateChanged(Connection connection, ConnectionStates oldState, ConnectionStates newState)
{
messages.Add(string.Format("[State Change] {0} => {1}", oldState, newState));
}
/// <summary>
/// Display errors.
/// </summary>
void signalRConnection_OnError(Connection connection, string error)
{
messages.Add("[Error] " + error);
}
#endregion
}
}
#endif