Table of Contents
以下サイトを参考にテストしてみました。
https://blog.potproject.net/?p=337
monacaから使用するのでサーバ側は、さくらVPSに配置しました。
node.jsとnpmはインストール済みという前提ではじめました。
サーバ側を実装
・テスト用ののディレクトを作成
mkdir /var/www/socket
・package.jsonを作成(npm initはなにも入力しなかった。)
cd /var/www/socket npm init
・npmで「socket.io」と「socket.io-client」をインストール
npm install socket.io socket.io-client
・かんたんなソケット通信ができる実装を
/var/www/socket/app.js
var http = require('http');
var socket = require('socket.io');
var server = http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type':'text/html'});
res.end('server connected');
});
var port = 3000;
var io = socket.listen(server);
server.listen(port);
io.sockets.on('connection', function (socket) {
socket.emit('text', 'socket.io OK!!');
});
クライアント側の実装 monaca(Onsen UIとAngularJSを利用)
index.html
<!DOCTYPE HTML> <html lang="ja" ng-app="chat-app"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> <meta http-equiv="Content-Security-Policy" content="default-src *; style-src * 'unsafe-inline'; script-src * 'unsafe-inline' 'unsafe-eval'"> <script src="components/loader.js"></script> <link rel="stylesheet" href="components/loader.css"> <link rel="stylesheet" href="css/style.css"> <link rel="stylesheet" href="css/font-awesome.min.css"> <script src="http://【さくらVPSのドメインまたはIP】:3000/socket.io/socket.io.js"></script> <script src="js/app.js"></script><!--このjsへwebsocketの処理を実装--> </head> <body ng-controller="mainCtrl"> </body> </html>
app.js
var module = angular.module('chat-app', ['onsen']);
document.addEventListener ("deviceready", onDeviceReady, false);
function onDeviceReady () {
}
// コントローラー
module.controller('mainCtrl', function($scope, $http, $sce, $q, $anchorScroll, $location) {
// document.readyの実装
angular.element(document).ready(function () {
// ソケット通信テスト
$scope.soketTest();
});
// ソケット通信テスト
$scope.soketTest = function() {
var url = "ws://【さくらVPSのドメインまたはIP】:3000/"; //websocketサーバのURL。
//接続
var socket = io.connect(url);
socket.on('connect', function() {
console.log('connect!');
});
// サーバーからのテキストを受けてコンソールに表示
socket.on('text',function(text){
console.log(text); // 'socket.io OK!!'がコンソールに表示される
});
};
});
