spagettyの研究ノート

色々な研究をします

socket.ioを使う場合のデータの渡し方

socket.ioを使った処理を書くときに困るのが、クライアント/サーバー間のデータのやり取りが分かりにくくなること。
scrumblrのソースコードを読んでみると、以下の方法をとっていたのでメモ。

クライアント側

処理のカタマリにして、データを送る

function sendAction(a, d)
{	
	var message = { 
		action: a,
		data: d
	}
	
	socket.send ( message );
}

例えば、ユーザー登録の場合
userdata = {userId: userId, name: name};
sendAction('addUser',userdata);
のような感じ

サーバー側

サーバー側はaction名に応じて、switchを使って処理を決める。
以下は、addUserを受け取る処理の例

client.on('message', function( message ){ 
  if (!message.action)	return;

    switch (message.action){
      case 'addUser':
        addUser(message.data);
        break;
    }
});