private void StartReceiving(Action <string> onReceived) { Debug.Log("start receiveing data."); ShowEditorLocalIP(); // WS -> updateへのデータの転送を行うチャンネル。 var chan = Chan <OnUpdatePayload> .Make(); // updateでデータを受け取るブロック。 chan.Receive( (data, ok) => { if (!ok) { return; } onReceived(data.payload); } ); var fp = new FilePersistence(Application.persistentDataPath); ws = new WebuSocket( "ws://" + "127.0.0.1" + ":1129", 10240, () => { // 接続できたipを保存 fp.Update("connectionRecord", "latestIp", "127.0.0.1"); // var data = new byte[1300]; // // for (var i = 0; i < data.Length; i++) // // { // // data[i] = (byte)UnityEngine.Random.Range(0, 100); // // } // try // { // ws.Send(data); // } // catch (Exception e) // { // Debug.Log("ここだ" + e); // } // do nothng. }, segments => { // データを受け取った。受け取りは非メインスレッドなので、メインスレッドに転送する必要がある。 while (0 < segments.Count) { var data = segments.Dequeue(); var bytes = new byte[data.Count]; Buffer.BlockCopy(data.Array, data.Offset, bytes, 0, data.Count); // updateブロックへと転送する var jsonPayload = new OnUpdatePayload(); jsonPayload.payload = Encoding.UTF8.GetString(bytes); chan.Send(jsonPayload); } }, () => { }, closedEnum => { Debug.Log("closedEnum:" + closedEnum); }, (error, reason) => { Debug.Log("error:" + error + " reason:" + reason); }, new Dictionary <string, string> { { "local", "" } } ); }