Unityを使用してサーバーと通信するアプリを制作しています。
サーバー側:Node.js,ws
クライアント側:Unity2D,WebSocketSharp
これのサーバープログラムをHerokuにデプロイして接続しようとしたところ
接続ができなくて困っております。
恐らくサーバー側・クライアント側共にホストとポートの指定の部分で引っかかっているのだと思うのですが原因がわかりません。
ご教授いただければ幸いです。
#試したこと(ローカル通信:成功)
ネット上にあった下記のサンプルプログラムを実装し
ローカルでの通信に成功しました。
server
1var ws = require ('ws').Server; 2 3var wss = new ws ({port: 3000}); 4//var wss = new ws ({port: process.env.PORT||3000}); 5// herokuにデプロイする場合 ↑ のようにすべき? 6 7wss.on ('connection', function (socket) { 8 console.log ("[connect]"); 9 socket.on ('message', function (message) { 10 console.log ("[message]"); 11 socket.send('This is server'); 12 }); 13 14 socket.on('close', function () { 15 console.log ("[close]"); 16 }); 17});
client
1using UnityEngine; 2using System.Collections; 3using WebSocketSharp; 4using WebSocketSharp.Net; 5 6public class WebSocketClient: MonoBehaviour { 7 8 WebSocket ws; 9 10 void Start() 11 { 12 ws = new WebSocket("ws://localhost:3000/"); 13 // herokuにデプロイしたサーバーに接続する場合 14 // git push heroku masterを実行した際に表示される 15 // remote:https://***/ deployed to Heroku 16 // の[***]この部分を 17 // ws = new WebSocket("ws://***/"); 18 // のように記述すれば良い? 19 20 ws.OnOpen += (sender, e) => 21 { 22 Debug.Log("WebSocket Open"); 23 }; 24 25 ws.OnMessage += (sender, e) => 26 { 27 Debug.Log("WebSocket Message :" + e.Data); 28 }; 29 30 ws.OnError += (sender, e) => 31 { 32 Debug.Log("WebSocket Error Message: " + e.Message); 33 }; 34 35 ws.OnClose += (sender, e) => 36 { 37 Debug.Log("WebSocket Close"); 38 }; 39 40 ws.Connect(); 41 42 } 43 44 void Update() 45 { 46 47 if (Input.GetKeyUp("s")) 48 { 49 ws.Send("Test Message"); 50 } 51 52 } 53 54 void OnDestroy() 55 { 56 ws.Close(); 57 ws = null; 58 } 59}
#試したこと(Herokuと通信:失敗)
サーバー側のport指定を変更し
server
1var ws = require ('ws').Server; 2 3//var wss = new ws ({port: 3000}); 4var wss = new ws ({port: process.env.PORT||3000}); 5// このように変更
クライアント側のURLをgit push heroku masterを実行した際に表示されたURLに変更
client
1 // ws = new WebSocket("ws://localhost:3000/"); 2 ws = new WebSocket("ws://***.herokuapp.com/"); 3/* 4 git push heroku masterを実行した際に表示された 5 remote:https://***.herokuapp.com/ deployed to Heroku 6 のURLに変更した 7*/ 8
実行した結果接続できず、Unityのログ表示は以下の様になりました。
WebSocket Close UnityEngine.Debug:Log(Object) <>c:<Start>b__1_3(Object, CloseEventArgs) (at Assets/WebSocketClient.cs:35) WebSocketSharp.Ext:Emit(EventHandler`1, Object, CloseEventArgs) WebSocketSharp.WebSocket:close(PayloadData, Boolean, Boolean, Boolean) WebSocketSharp.WebSocket:fatal(String, UInt16) WebSocketSharp.WebSocket:fatal(String, Exception) WebSocketSharp.WebSocket:connect() WebSocketSharp.WebSocket:Connect() WebSocketClient:Start() (at Assets/WebSocketClient.cs:38) ← ws.Connect();のところ
##失敗2
以下、失敗2,3ともに同様のログ表示となりました。
server
1var ws = require ('ws').Server; 2 3//var wss = new ws ({port: 3000}); 4var wss = new ws ({port: process.env.PORT||3000}); 5// このように変更
client
1 // ws = new WebSocket("ws://localhost:3000/"); 2 ws = new WebSocket("ws://***.herokuapp.com:3000/");
##失敗3
server
1var ws = require ('ws').Server; 2 3var wss = new ws ({port: 3000}); 4// このように変更
client
1 // ws = new WebSocket("ws://localhost:3000/"); 2 ws = new WebSocket("ws://***.herokuapp.com/");
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。