satococoa's blog

主にサーバーサイド、Web 系エンジニアのブログです。Go, Ruby, React, GCP, ...etc.

CloudFoundryでSocket.ioを試した(失敗)

CloudFoundryでNodeを試してる続きです。(前回:CloudFoundryでNode+MongoDBを動かした

app.jsに以下を追加して、とりあえず接続者数を表示するようにしてみました。

var socket = io.listen(app);
var count = 0;
socket.on('connection', function(client){
  count++;
  client.broadcast(json({count: count}));
  client.send(json({count: count}));

  client.on('message', function(message){
    client.broadcast(message);
    client.send(message);
  });

  client.on('disconnect', function(){
    count--;
    client.broadcast(json({count: count}));
  });
});

クライアント側のJavaScriptはこんな感じ。

var socket = new io.Socket(host_url.split(':')[0]);
socket.connect();
socket.on('message', function(message){
  $('#count').text(JSON.parse(message).count);
});

ほとんどExpressとSocket.ioを使ったWebSocketのサンプルを作る - 自分の感受性くらいのパクりです。

実際にhttp://instanode.cloudfoundry.com/にデプロイしてみましたが、どうもxhr-pollingになってしまっています。

やはりnginxの後ろにいるからWebSocketはNGということでFAでしょうか。
やり方があったら知りたいなぁ。