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 件のコメント:
コメントを投稿