socket.ioでスマホブラウザ→heroku(node.js)→スマホ→Unity(mac)
前回のWebSocketでスマホブラウザ→heroku(node.js)→Unity(mac)ではWebSocketでやりましたがWebSocketだとAndroid4.4以外のブラウザはダメです。
socket.ioをいろいろ試したけどMac上のUnityでは全然つながらず。。
試しにAndroidアプリ(java)でsocket.ioを試すと接続できました。
というわけで下記の仕組みならいけそうだなと。
・Androidでテザリング
・Macをテザリングのwifiにつなぐ
・サーバのnode.jsに送られたデータはAndroidに届く
・そのデータをAndroidアプリからOSCで制御用PCに送信
Android2.3のGalaxySでもsocketでUnityまで送信できました。
前回のFlashCCで書き出したcanvasも動いたし。
これでイベントに来たお客さんがスマホブラウザでインスタレーションに参加しやすくなります。
しかもこれならイベント会場にネット環境が無くても、携帯の電波が届けばいけます。
ただsocketを受け取るスマホが安定して動くかどうかが心配。どの程度の数まで捌けるかとか。
サーバーサイド(heroku:node.js)
var express = require('express') , http = require('http') , path = require('path') , socketio = require('socket.io') , port = process.env.PORT || 5000; var app = express() , server = require('http').createServer(app) , io = socketio.listen(server); //よくわかって無いけどこれ書いとくと表示するhtmlで外部jsを読み込める app.use(express.static(__dirname + '/')); server.listen(port); io.set('transports', [ 'websocket' , 'xhr-polling' ]); server.listen(app.get('port')) var hostpc; io.sockets.on('connection', function(socket) { socket.on('sethost', function (data) { //socketを受け取るAndroid端末を設定 hostpc = socket; }); socket.on('fromclient', function (data) { //お客さんのスマホからのデータをAndroid端末へ if (hostpc != null) { hostpc.emit('fromclient', data); } }); });