cocos2dx に xhr と websocketが実装されました。
cocos2d-x ver 2.1.4 が神アップデートすぎる件について
javascriptでopenglのパフォーマンスが得られるのは素敵なのに
通信ができないんじゃ使えないじゃん。
って思ってましたが、実装されちゃったので早速使ってみます。
twitterのstreaming api を流してみます。
こんな感じ↓
streamingapiに繋ぐ
まずは node と twitterを繋ぐ
Node.js で Twitter Streaming API のデータを Treasure Data に流しこむ | Please Sleep
↑こちらからコピペ。
素晴らしい!Please Sleep さんありがとうございます!
var twitter = require('ntwitter'); var twitter = new twitter({ consumer_key: '-----', consumer_secret: '-----', access_token_key: '-----', access_token_secret: '----', }); var trackList = [ '#ニュース' , '#まとめ' , '#nhk' ]; twitter.stream('statuses/filter', {'track': trackList.join(',')}, function (stream) { stream.on("data", function(data){ console.log(data.text); broadcast(JSON.stringify(data)); // ← broadcastは次で }); });
websocketサーバーを作る
次にwebsocketサーバーを作ります。
node.jsのいろいろなモジュール23 – wsでWebSocket接続 | Developers.IO
↑こちらからコピペ。
Developers.IOさんありがとう!
'use strict'; //app.js var WebSocketServer = require('ws').Server , http = require('http') , express = require('express') , app = express(); app.use(express.static(__dirname + '/')); var server = http.createServer(app); var wss = new WebSocketServer({server:server}); //Websocket接続を保存しておく var connections = []; //接続時 wss.on('connection', function (ws) { console.log("connection"); //配列にWebSocket接続を保存 connections.push(ws); //切断時 ws.on('close', function () { connections = connections.filter(function (conn, i) { return (conn === ws) ? false : true; }); }); }); // console.log(wss); //ブロードキャストを行う function broadcast(message) { connections.forEach(function (con, i) { con.send(message); }); };
先人の知恵に感謝
cocos2dx javascriptから繋ぐ
cocos2dxのサンプルの中にwebsocketの使用例が入ってるのでそれを見ながら書いてみます
cocos2dx_jsのプロジェクトを新規に作って
AppDelegate.cppに
#include "jsb_websocket.h" // 中略 sc->addRegisterCallback(register_jsb_websocket);
を追加して
hello.jsのどっかに以下
// websocketのurl var url = "ws://sockettest2.marimo.c9.io"; var socket = new WebSocket(url); socket.onopen = function(evt) { cc.log("onopen"); }; socket.onmessage = function(evt) { var jsonData = JSON.parse(evt.data); cc.log(jsonData.text); }; socket.onerror = function(evt) { cc.log("sendText Error was fired"); }; socket.onclose = function(evt) { cc.log("_wsiSendText websocket instance closed."); };
あとはこれを使って何か描画してみよう
JSON.parseがちょこちょここけるのはなぜだろう。
そんなcocos2dx, websocket に興味のある(なくてもOK)デザイナー募集中!
現在スバコラボではデザイナーを【爆裂】で【激求】しています。
お気軽にご応募ください
ご応募はこちらから
0 件のコメント:
コメントを投稿