2013ǯ03��14��

WebSocket ���ץ�����ʬ��

¤Ï¤Æ¤Ê¥Ö¥Ã¥¯¥Þ¡¼¥¯¤ËÅÐÏ¿

�Ƕ� SPDY �� WebSocket �����Ĥ��Ǥ��͡� ���轵�� SPDY & WS �ٶ��� �⡢���100̾���Ф��� ���üԤ� 247 ̾�Ȥ��ʤꥢ�Ĥ����ȤˤʤäƤ��ޤ���

����ͽ���Ȥ����櫓�Ǥ�ʤ��Ǥ������Ƕ� WebSocket ��¥����ӥ��ؤ� Ƴ����ˡ��ͤ��ʤ���ͷ��Ǥ����Τǡ� WebSocket �����ʬ����ˡ�ˤĤ��� �ͤ��Ƥ��뤳�Ȥ�񤤤Ƥ������Ȼפ��ޤ���

���ơ��ȥե�� WebSocket ���ץꥱ�������

HTTP �����ӥ��ϴ���Ū�˥��ơ��ȥ쥹�ʼ����ˤʤäƤ��ꡢ�ꥯ�����Ȥ���뤿�Ӥ� DB�����С��� memcached �ʤɤΥХå�����ɤ���������������֤��Ƥ��ޤ�����

���ι����Ǥ� Web ���ץ꼫�Τϴ����˥��ơ��ȥ쥹�����뤳�Ȥ��Ǥ��Ƥ���Τǡ� ���ʬ�����ϥ饦��ɥ��ӥ����Υ��ץꥱ��������̵�뤷�����ʬ���򤹤뤳�Ȥ��Ǥ��ޤ�����

�������� WebSocket ���о줷�ƥꥢ�륿���� Web ����ڤ������줬��å������Ƥ���ȡ� ���ơ��ȥ쥹���Ǥϸ�Ψ�������ʤ��������ޤ���

���Ȥ���ʣ���Υ���åȥ롼�����ĥ���åȥ��ץ�����硢����åȤ����Ƥ� Redis �˳�Ǽ���� Redis �� pubsub ��ǽ��Ȥä�¾�� Web �����С��˹��������Τ��뤳�Ȥ��Ǥ��ޤ����� Redis �� subscribe ���Ƥ��� Web �����С����Ƥ����Τ����ꡢ����åȥ������������ꥯ�����Ȥ� ���Ф��ʤ���Фʤ�ޤ���.

MMO ������Τ褦�˥��ץꥵ���С��Υ����˥���åȥ������Ǽ����Ʊ������åȥ롼��ˤ��� �桼����������Ʊ�����ץꥵ���С�����³����褦�ˤ���Фɤ��Ǥ��礦���� ���ץꥵ���С��ϥХå�����ɤ������Τ������ä����å�������������ʤ��Ƥ������� ��å��������ۿ��Ǥ��ޤ�������ʤ�Хå�����ɤȤ��̿��ϥ�������¸����1��ǺѤߤޤ���

����ˡ�Ǥ��ι������Ȥ��硢���ץ�򥹥ơ��ȥ쥹�ʥե����Web���ץ�ȥ��ơ��ȥե�� �Хå�����ɥ��ץ��2�ʹ����ˤ��뤳�Ȥ��Ǥ��ޤ��� �Ǥ⡢�������٤ʤ��С����ץ�������ľ�ܥꥯ�����Ȥο���ʬ�����äƤ��ޤä��ۤ��� �ڤ����㥳���ȤǤ���͡�

redis ��Ȥä�ưŪ�����ʬ��

�����ǡ� redis �� URL �Υѥ����Ȥ�ʬ������Ǽ���Ƥ����������Ȥä�ưŪ�� ��С����ץ��������빽����ͤ��Ƥߤޤ�����

��Ψ�����®�٤Τ��Ȥ�ͤ����顢��С����ץ������� WebSocket �Υǥ����ɡ����󥳡��ɤ򤹤� ���⡢HTTP �����С��� Upgrade �إå��򸫤Ĥ���� TCP �ץ������Ȥ���ư���ۤ��������Ϥ��Ǥ���

Go

�ǽ���ܤ�Ĥ����Τ� Go �Ǥ���nginx ���ϥ����ɤ��ɤ߽񤭤��䤹������Ǥ��� (node.js �Ǥ��ɤ��ΤǤ����Ŀ�Ū�ˤ� JavaScript ���� Go �����������Ǥ�)

Go ��ɸ��饤�֥�� "net/http" �ˤϤ��Τ�Υ��Х�� revserseproxy ������ޤ��� ����������� WebSocket ���б����Ƥ��ʤ��Τǡ�����äȲ�¤���� Upgrade �إå��򸫤Ĥ���� TCP �ץ������ˤʤ뵡ǽ���ɲä��ޤ����� (methane/rproxy)

���Ȥ� redigo �Ȥ��� Redis ���饤�����(̾�������å�������) ���Ȥ߹�碌��Ф���ڤ˸�����С����ץ������δ����Ǥ���

nginx + lua

���������� nginx ��Ƕ� WebSocket ���б������ä�����ˤʤäƤ��ʡ��Ȼפä�Ĵ�٤Ƥߤ�ȡ� ����� Upgrade �إå��򸫤� TCP �ץ������Ȥ��Ƥդ�ޤ��褦�Ǥ��� �����Ĵ�٤Ƥߤ��� Redis + Lua ��Ȥä�ưŪ�����ʬ�����륵��ץ�⤤���Ĥ��ߤĤ���ޤ�����

�������� nginx �Υ��֥ꥯ�����Ȥϴ���Ū�� HTTP �ѤǤ��ޤ� memcached �� redis �˳�Ǽ���� ����ʸ����򰷤��Τ˸����Ƥ��ʤ��Τǡ� lua-resty-redis �Ȥ��� pure Lua �Υ饤�֥���Ȥäƽ񤭤ʤ����Ƥߤޤ�����

���������� nginx ����Ʊ����ǽ��ȤäƤ����Τ� Redis ���䤤��碌���Ƥ���� �֥��å�������Ϥ��ޤ��󤷡����ͥ������ס�����ǽ�Ǥ���

���ä�����ä��Τ� Go �Ǥ�Ҳ𤷤���Τ�, nginx ���Ȥ���ʤ�⤦ nginx �Ǥ����Ǥ��͡� �Ǥ⡢��� Redis ���䤤��碌��ΤǤϤʤ� expire �դ��� LRU ����å���򥤥����Ǥ��Ȥ��� Socket.IO �Υ��å�������Ϥ��Ƽ�ʬ�� Redis �˳�Ǽ����Ȥ�ʣ���ʤ��Ȥ򤹤�ʤ� Go �ζ��ߤ������Ƥ��뤫�⤷��ޤ���

����ץ�

���Ԥ������ޤ���������ץ�Ϥ�����ˤʤ�ޤ���

KLab/websocket-reverseproxy-demo

���Υ���ץ�Ǥϡ� Tornado ��Ȥä���������ư������åȥ��ץ��2�ĤΥݡ��Ȥ�Ω���夲�� Redis �˥���åȥ롼�ऴ�ȤΥХå�����ɤ��Ǽ������ǡ� nginx �� go �ˤ���С����ץ�������ư����ǧ���Ƥ��ޤ���

Go �� nginx �Ⳬȯ�Ǥ�ȤäƤ���ΤǾ����ϡ��ɥ뤬�⤤���⤷��ޤ��󤬡� SPDY & WS �ٶ���� ���üԤϤ���ͽ���Ȥ��ƻ�ƤߤƤ���������


@methane
klab_gijutsu2 at 18:33��Comments(2)��TrackBack(0)��golang 

�ȥ�å��Хå�URL

���ε����ؤΥ�����

1. Posted by �̤ꤹ����   2014ǯ08��20�� 11:04
websocket �ϡ��ץ졼��ƥ����ȿ��ή���Ǥ����������奢�ˤ���Τˡ�ssl ��������Ϥʤ��ΤǤ��礦����
2. Posted by methane   2014ǯ09��03�� 20:48
WebSocket �ˤϥե졼��Υޥ������������äơ����饤�����¦�����Ѥ�ɬ�ܤˤʤäƤ��ޤ����������С�¦��ޥ�����ͭ���ˤ��뤳�Ȥ�������Ƥ��ޤ���
���Υޥ����ϥե졼����˥������4�Х��Ȥǥե졼����Υǡ����� XOR ���ޤ���
�ʤΤǡ�����ץ졼��ƥ����Ȥ��򤱤���ϤǤ���ΤǤ������ȤƤ��ñ�����ɲ��Ǥ����ʤ��Τǡ������奢�ǤϤ���ޤ���

�ü�� proxy �˼��⤵��ʤ�����ˤ⡢ WebSocket ��Ȥ����� TLS �����Ѥ��뤳�Ȥ��侩����ޤ���

���ε����˥����Ȥ���

̾��:
URL:
  ����òµ­²ï¿½: ɾ��: ��    ��
 
 
 
Blog�⸡��
�ǿ�����
Archives
���Υ֥����ˤĤ���
DSAS�Ȥϡ�KLab �����ۤ����Ѥ��Ƥ��륳��ƥ�ĥ����ӥ��Ѥ�Linux�١����Υ���ե�Ǥ�������5����Υǡ������󥿤ˤƹ��ۤ������Ѥ��Ƥ��ޤ������桹��DSAS����Ȥ��䤹�����������ˡ������Ƥ����ϤDZ��ѤǤ��뤳�Ȥ��ܻؤ��ơ��������ɤ˶Ф���Ǥ��ޤ���
���Υ֥����Ǥϡ������ DSAS �ǻȤäƤ��뵻�ѤξҲ�䡢�¸����Ƥߤ���̤���𡢥ȥ�֥�˴������ޤ줿���ηи��̤ʤɡ���������������������򿥤�ޤ��ƾҲ𤷤Ƥ��������Ȼפ��ޤ���
�ǿ�������
<%==comments[n].author%>
<% } %>