I have a code for unity to connect it manually with react.js inside the simulation and .exe file but in WebGL its not working.
Code for Unity:
using UnityEngine;
using UnityEngine.UI;
using WebSocketSharp;
public class WebSocketSample : MonoBehaviour
{
public float maxBendAngle = 150f;
public float bendSpeed = 10f;
public Text angleText;
public Text bendspeedText;
private float targetAngle = 0f;
private WebSocket ws;
private void Start()
{
SetupWebSocket();
}
private void OnDestroy()
{
if (ws != null && ws.IsAlive)
{
ws.Close();
}
}
private void SetupWebSocket()
{
ws = new WebSocket("wss://localhost:8080");
ws.OnOpen += OnWebSocketOpen;
ws.OnMessage += OnWebSocketMessage;
ws.OnClose += OnWebSocketClose;
ws.ConnectAsync();
}
private void OnWebSocketOpen(object sender, System.EventArgs e)
{
Debug.Log("WebSocket connected.");
}
private void OnWebSocketMessage(object sender, MessageEventArgs e)
{
if (float.TryParse(e.Data, out float receivedAngle))
{
targetAngle = receivedAngle;
Debug.Log($"Received angle: {receivedAngle}");
SendMessage("ReceiveMessage", e.Data);
}
}
private void OnWebSocketClose(object sender, CloseEventArgs e)
{
Debug.Log("WebSocket disconnected.");
}
private void Update()
{
float input = -Input.GetAxis("Horizontal");
targetAngle += input * bendSpeed * Time.deltaTime;
targetAngle = Mathf.Clamp(targetAngle, 0f, maxBendAngle);
UpdateUI();
SendTargetAngleToServer();
Quaternion targetRotation = Quaternion.Euler(0f, 0f, -targetAngle);
transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, Time.deltaTime * bendSpeed);
}
private void UpdateUI()
{
angleText.text = targetAngle.ToString("F2");
bendspeedText.text = bendSpeed.ToString();
}
private void SendTargetAngleToServer()
{
if (ws != null && ws.ReadyState == WebSocketState.Open)
{
ws.Send(targetAngle.ToString());
}
}
}