WebSocket Unityとサーバーの双方向通信 サーバー編

WebSocketを使ったUnityとサーバーの双方向通信の実装

前回に引き続きサーバー立てた理由にもなる企画です
後々使うことになるので試します

WebSocketを使ってUnityとサーバー間で
テキストデータを送り合うことを第一目標にしています

其の壱ではサーバー側の処理を作ります

用語整理

Unity
統合開発環境を内蔵したゲームエンジン
2Dはもちろん、3DやVR用アプリケーションも作ることができる
Web,iOS,Androidなど様々な機器向けにデータをエクスポートできる

使用されているサーバー

サーバーをたてる!(契約編)

こちらの記事でたてたUbuntu Server
このブログのファイルも置かれている

HTTP ( Hypertext Transfer Protocol )
ハイパーテキスト・トランスファー・プロトコル
リクエスト-レスポンス型のプロトコルで
ハイパーテキスト、画像、音声 などを
サーバーからクライアントへ転送できる
クライアントがサーバにリクエストを送信、レスポンスを返す
基本、この時点で初期状態に戻るので
サーバはクライアントの状態を保存しない

WebSocket
HTML5に定義されている技術規格
クライアントとサーバー間に「ソケット」と呼ばれる
持続的な接続を確立させることで
双方向からデータの送信を開始できるようになる(らしい)
基本的なHTTPだとクライアントからだけしか
データの送信を開始できない

サーバー側実装

サーバー側でのWebSocket通信の準備をします
ネット上の情報ではnode.jsを使っているものが
多いようなのですが、後でAI系のものを
組み合わせるのでPythonを使って実装します

お約束

ubuntu 14.04 のアップデートを確認

root@localhost:~# sudo apt-get update

アップデートを適用

root@localhost:~# sudo apt-get upgrade

使わなくなったパッケージを削除

root@localhost:~# sudo apt-get -y dist-upgrade

autoremove

root@localhost:~# sudo apt-get -y autoremove

aptのキャッシュを削除

root@localhost:~# sudo apt-get -y autoclean

 

Python3 環境確認

python3バーション確認

~# python3 -V
Python 3.4.3

pip3のバーションを確認

~# pip3 --version
pip 1.5.4 from /usr/lib/python3/dist-packages (python 3.4)

 

ファイル作成

新規ディレクトリ作成

 ~# mkdir /home/ユーザー名/python3_project/mei/version_1/

Pythonファイル作成
arp.py ( automatic response program )

~# vim /home/ユーザー名/python3_project/mei/version_1/arp.py

Pythonファイル編集

websocket-serverのGitページに載ってるサンプル
他のPythonでWebSocketやってた人のコードを参考に

さっきのwebsocket_serverパッケージと
ログを取るlogginを入れてます

ポート番号はGitのサンプルのまんまにしてあります

import logging
from websocket_server import WebsocketServer

PORT=9001
HOST='27.120.98.26'

#logger_setup
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
handler = logging.StreamHandler()
handler.setFormatter(logging.Formatter(' %(module)s -  %(asctime)s - %(levelname)s - %(message)s'))
logger.addHandler(handler)
 
#callback
def new_client(client, server):
    logger.info('New client {}:{} has joined.'.format(client['address'][0], client['address'][1]))
 
def client_left(client, server):
    logger.info('Client {}:{} has left.'.format(client['address'][0], client['address'][1]))
 
def message_received(client, server, message):
    logger.info('Message "{}" has been received from {}:{}'.format(message, client['address'][0], client['address'][1]))
    reply_message = 'Re: ' + message
    server.send_message(client, reply_message)
    logger.info('Message "{}" has been sent to {}:{}'.format(reply_message, client['address'][0], client['address'][1]))
 
#main
if __name__ == "__main__":
    server = WebsocketServer(port=PORT, host=HOST, loglevel=logging.INFO)
    server.set_fn_new_client(new_client)
    server.set_fn_client_left(client_left)
    server.set_fn_message_received(message_received)
    server.run_forever()

たぶんこれで動くはず…

 

其の弐はこちら
https://www.washio.net/wacode/websocket-unity-server-com-2/

サーバーをたてる!(ブログ移行編)

新しいサーバーにブログを移転します

前回の記事分の作業が終了した状態でサイトURLを
開くとWordPress初期設定画面になります

必要情報を入力するだけで簡単にサイトができてしまいます
ここでは、簡単なトラブルシューティングを書きます
(前回の記事と多少かぶっています)

No.1
画像ファイルがアップロードできない

たぶん権限がありません。
ディレクトリのアクセス権限をいじるとできます

sudo chmod -R g+w /var/www/html/wacode/

No2.
Wordpressで新しいパーマリンクを作ろうとするとエラーになる

以下修正します

~$ sudo vim /etc/apache2/apache2.conf

##追記する
<Directory /var/www/html/wacode>
    AllowOverride All
</Directory>

忘れずに設定を反映

~$ sudo apache2ctl configtest
~$ sudo a2enmod rewrite
~$ sudo service apache2 restart

 

ルートにindex.htmlを置く

Apache2は、ルートのフォルダにファイルがなくなると
(デフォルトファイルを消した)

ディレクトリリスティングという機能が動いて
ルート以下のフォルダ・ファイルを丸見えにしてしまいます
前回オフにしました

なので、ルートはからっぽになっていてNotFoundです
https://www.washio.net/まで来た人が、
wacodeにたどり着かないともったいないので
(あと父親がもう一つページを増やすそう)

サーバー作った理由の企画
進めたいのでCSSとか考えずに文字だけで
スピード重視で作ります

index.htmlを置いて、wacodeへ誘導します

お約束

ubuntu 14.04 のアップデートを確認

root@localhost:~# sudo apt-get update

アップデートを適用

root@localhost:~# sudo apt-get upgrade

使わなくなったパッケージを削除

root@localhost:~# sudo apt-get -y dist-upgrade

autoremove

root@localhost:~# sudo apt-get -y autoremove

aptのキャッシュを削除

root@localhost:~# sudo apt-get -y autoclean

vimエディタは、指定されたパスにファイルがないと自動で生成します

vim /var/www/html/index.html

“/var/www/html/index.html” [New File]
と表示されて記述画面になります
大文字”A”をコマンドモード(escを押すとなる)で入力すると
その行の末尾から挿入になります

保存、終了はコマンドモードで”:wq”です
保存しないで終了は”q!”とか色々ある

<html>
<head>
<title></title>
<meta charset="utf-8">
<meta name="description" content="">
<meta name="author" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="">
<link rel="shortcut icon" href="">
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>
<body>
<h1>washio.net - Homepage Selecter</h1>
<a href= “https://www.washio.net/wacode”>
</body>
</html>

内容だけ決めればささっとできます

打ち終わったら”:wq”で保存

sudo service apache2 restart

Apacheを再起動
これでたぶんルートにファイルができました

https://www.washio.net