socket.joinとsocket.broadcast

### html
– roomの値とmsgをjsonでemitする

<form id="myForm">
		<select id="rooms">
			<option value="room-1">Room 1</option>
			<option value="room-2">Room 2</option>
		</select>
		<input type="text" id="msg">
		<input type="submit" value="send">
	</form>
	<ul id="logs">
	</ul>
	<script
  src="https://code.jquery.com/jquery-3.4.1.min.js"
  integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo="
  crossorigin="anonymous"></script>
	<script src="/socket.io/socket.io.js/"></script>
	<script>
		$(function(){
			var socket = io.connect();
			// emit: イベント発信 (ブラウザ側)
			// on: イベント待ち受け (サーバ側)
			$('#myForm').submit(function(e){
				// preventDefaultでsubmit後に遷移しないようにする
				e.preventDefault();
				socket.json.emit('emit_from_client', {
					room: $('#rooms').val(),
					msg: $('#msg').val(),
				});
				$('#msg').val('').focus();
			});
			socket.on('emit_from_server', function(data){
				$('#logs').append($('<li>').text(data));
			});
		});
	</script>

### app.js
joinしたルームに対してsocket.broadcastする

io.sockets.on('connection', function(socket){
	socket.on('emit_from_client', function(data){
		// ルームの情報を割り当て
		socket.join(data.room);	
		socket.emit('emit_from_server', 'you are in ' + data.room);
		// 対象ルームに対してのみbroadcast
		socket.broadcast.to(data.room).emit('emit_from_server', data.msg);
	});
});

on, emit, join, broadcastの意味がわかると、楽しくなってきます。