![【node】socket.ioに関するまとめ・メモ - CAMPHOR- Tech Blog](https://cdn-ak-scissors.b.st-hatena.com/image/square/ce665300e5836854f1b9e1b45c130b43a0db3d88/height=288;version=1;width=512/https%3A%2F%2Ftech.camph.net%2Fwp-content%2Fuploads%2F2013%2F09%2Fog_image.png)
iOSアプリからUIWebViewなどを介さずにnode.js+Socket.IOと双方向通信するための簡単なサンプルを紹介します。 サーバ側の実装 iOSアプリからnode.js+Socket.IO間で双方向通信するには、socket.IO-objcというライブラリを使用します。 今回はサーバ側には弊社うえじゅん氏が公開している記事で作ったチャットアプリを使用しますので、まずは以下の記事を参考にチャットアプリを作っちゃってください。 Node + Socket.IO で簡単なチャットアプリの作成 チャットアプリの準備が終わったら、早速iOSアプリ側の準備をしましょう。ここからは以下の環境を前提に説明します。 Mac OS X 10.8 Moutain lion Xcode 4.5.2 iOS SDK 6.0 iOSアプリの実装 サンプルプロジェクトのダウンロード 今回紹介するiOSアプリ
Socket.IO を利用する際に, HTTP ヘッダーに認証トークンや Cookie を設定したいというケースがあります. 従来 HTTP ヘッダーを Socket.IO で設定することは難しいとされていましたが, socket.io-client 1.4 以降では extraHeaders を用いて設定できるようになっています. 使い方 クライアント側で Socket.IO の接続を行う際にのオプションに extraHeaders を設定することで, リクエストに追加の HTTP ヘッダーを設定出来ます. var socket = require('socket.io-client')('http://localhost', { extraHeaders: { Authorization: "Bearer authorization_token_here" } }); サーバー側では
※ (2016/9/19 追記) Nginx 使った対応方法も記載しているので、あわせて参考にして下さい。 昨今のサービスにおいて、暗号化はもはや必須の流れである。 GoogleやFacebookなど主要なサービスはずいぶん前からHTTPS通信を標準としているし、HTTPS化対応しているサイトはSEO的にも優遇されるようになる という方針が出ていたりする。 前記事でSocket.IO + Redis PubSubを用いたリアルタイムメッセージ配信の仕組みをまとめたが、このままWebSocketを利用すると当然インターネット上を平文のテキストが流れてしまう。 また、チャット機能を呼び出す親元のWebページがHTTPSで提供されているものであれば、Mixed Content でブラウザによっては暗号化されていないWebSocket通信をブロックされることもあるだろう。 後からSSL/TLS対応
前回の記事では、socket.ioのソケットIDが頻繁に変わってしまう問題について調査しました。 その結果、何かしらの原因で接続が切断されているため、 その都度新しい接続扱いになりIDが変わってしまっているということがわかりました。 この問題は、テキストチャットのような比較的通信量の少ない(小さい)スクリプトでは発生しておらず、 頻繁に画像データをサーバに送信する通信量の多い(大きい)スクリプトでのみ発生しています。 今回はもう少し掘り下げて、なぜ接続が切断してしまうのかを調べてみたいと思います。 調査に使ったサンプルコードは、前回の記事を参照ください。 引き続き、調査 DEBUGモード 調査を進めるにあたり、もう少し詳細なログを見たいですね。 環境変数DEBUGに特定の値をセットした状態でnodeを起動するとdebugログを見ることができるそうです。 “*” をセットすればすべてのdeb
最近socket.ioがメジャーバージョンになって少しかわって 今まで io.sockets.socket(id).json.emit('msg', send_msg); みたいな感じでかけてたのですがsockets (namespace)がsocketメソッドを持たなくなってて、「 あれ特定ユーザ探す方法なくね」って思ってたんだけどドキュメントよんでたら Each Socket in Socket.IO is identified by a random, unguessable, unique identifier Socket#id. > For your convenience, each socket automatically joins a room identified by this id. This makes it easy to broadcast messages
というわけで、最近勉強してたSocket.IOでサンプルを作りました。 このソースをまるごと持って行ってIPなりポートなり調整すれば動くはずです。 おかげでロジック自体はシンプルになったけど、使い勝手云々いじると必然的にクライアント側のコードが多く・・。 今回は久しぶりにjQueryも使ってます。 仕様 部屋とニックネームを決めて入室し、その部屋でリアルタイムチャット 違う部屋の内容は見れない エンターキーでPOSTできる 一回入った部屋を出て、違う部屋に入れる スマートフォンでもキレイに見れる システムメッセージとユーザーのメッセージは住み分ける などなど。 ソース Html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-
公式のドキュメントが個人的に分かりにくいので自分がよく使っているものを備忘録を兼ねてまとめてみました。 バージョンは執筆時点の最新版であるVer1.3.5です。 それ以外のバージョンでは上手く動かないことがあるので注意してください。 Socket.IOのインストール方法 node.jsのスクリプトファイルがあるディレクトリ(フォルダー)に移動し、 $ npm install socket.io サーバーへの接続方法 サーバー側 //前略 var port = 80; var ip = 'localhost'; var io = require('socket.io')(app.listen(port,ip)); //クライアントとの接続に成功するとconnectionイベントが発火する io.on('connection',function(socket) { console.log('c
はじめに 今更な内容ですが実際に試したことがなかったのでメモ。 socket.ioをスケールアウトさせるような規模のサービスを作る機会がないのでやっていなかった。。。 まぁ今後もあるかどうか不明だけど、いちおう試しということで 実装自体はredisのpub/subを使ってくれるみたいで簡単だった > サーバー構成 web / web2 / redisという3台構成を想定 ipは順番に192.168.33.10 / 20 / 30とする Redisサーバ構築 redisインストール ※バージョンは今時点の最新(たぶん) root> cd /usr/local/src/ root> wget http://download.redis.io/releases/redis-3.2.3.tar.gz root> tar xvfz redis-3.2.3.tar.gz root> cd redis-
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く