WebSocket�̌���ƋZ�p�I�ۑ��FWebSocket�Ŗڎw���I ���A���^�C��Web�i2�j�i2/2 �y�[�W�j

» 2010�N10��20�� 00��00�� ���J
[���^�CNew Bamboo]
�O�̃y�[�W�� 1|2 �@�@�@�@�@�@

Pusher�a���̔w�i

�@���āAWebSocket���g���āA�����‚��T���v��������Ă����̂ł����A��͂���ۂɎg����A�v��������Ă݂����Ȃ���̂ł��B�������node.js�Ȃǂ��g���āA�������烊�A���^�C���ȃA�v�������̂��ǂ��̂ł����A�u�����̃A�v���Ƀ��A���^�C���ȋ@�\���ȒP�ɒlj��ł���Ηǂ���ˁv�ƁA�Г��ł悭�b���Ă��܂����B�܂��AGoogle App Engine��Heroku�Ƃ�����PaaS�iPlatform as a Service�j��ł��g������ǂ���ˁA�Ƃ����ӌ�������܂����B

�@���̂Ƃ��A���Ђ̃f�B���N�^�[�ł���@maxthelion���u�N���C�A���g���T�[�o�Ԃ�HTTP Post�iAjax�j�ŁA�T�[�o���N���C�A���g�Ԃ�WebSocket�Łv�Ƃ����A�[�L�e�N�`����񏥂��A@mlaughran����C�Ƀv���g�^�C�v�����グ�܂����B���ꂪWebSocket���N���E�h�ŗ��p���₷�����鎄�����̃T�[�r�X�uPusher�v�a���̔w�i�ł��B

Pusher��node.js�łł��Ă���́H

�@�����܂œǂ܂ꂽ�ǎ҂̊F����́u���悢��node.js�̎��H�������v�Ǝv��ꂽ��������܂��񂪁APusher�́uem-websocket�v�Ƃ���Ruby��EventMachine�𗘗p�������C�u�������g�p���Ă��܂��B��������Ruby���̗p�������R�ł����ANew Bamboo���̂�Ruby�ɓ��������V�X�e���J����ЂȂ̂ŁARuby�̂ق����J���X�s�[�h�������Ƃ����̂��������܂��B�܂��Anode.js�͓����͂܂��Ⴂ�t���[�����[�N�������̂Ńf�[�^�x�[�X�⃁�b�Z�[�W���O�V�X�e���Ȃǂ́A�ق��̃R���|�[�l���g�𗘗p���郉�C�u�������o������Ă��Ȃ�������A�܂����W�r�ゾ�����肵���Ƃ����̂����R�ł��B

�@���Ȃ݂�Pusher�Ƃ������t�́u����̔��l�v�̃X�����O�ł�����܂��B�u�T�[�o���N���C�A���g�Ԃ�Push����v�Ƃ����Ӗ��ƂƂ��ɁA�u����̂悤�ɒ��Ő��̂���قǖ��͓I�ȃA�v������鋴�n���l�v�ƌ����Ӗ����|�����킹�܂����B

Pusher�̃A�[�L�e�N�`��

�@�A�[�L�e�N�`����}�ɂ���ƈȉ��̂悤�ɂȂ�܂��B

Pusher̃A[LeN` Pusher�̃A�[�L�e�N�`��

�@�u�N���C�A���g��Web�T�[�o��Pusher WebSocket�T�[�o�v�̏��́AAjax��REST�Ƃ������]����HTTP���N�G�X�g��p���čs���܂��B�����āuPusher WebSocket�T�[�o���N���C�A���g�v�̉��葤�̂�WebSocket�̃R�l�N�V�����𗘗p���ăf�[�^���v�b�V�����郂�f���ł��B

�@�������邱�Ƃ�Web�T�[�o���͋����̃X�e�[�g���X�Șg�g�݂̒��ŊȒP�Ɂu�v�b�V���@�\�v�����t���邱�Ƃ��ł���悤�ɂȂ�܂��B

Pusher�̎g�p��

�@�g�����Ɋւ��Ă�Pusher�z�[���y�[�W�́u�N�C�b�N�X�^�[�g�v�̃y�[�W�ɂ���̂ł����A���ꂾ�Ɩʔ����Ȃ��̂ŁA�����ł͎��ۂ̃I�[�v���\�[�X�A�v�������ɉ�����Ă����܂��傤�B�T���v���͎��̉�Ђ̌������ł���Paul Jensen��������uRetrospectiveapp�v�ł��B�S�R�[�h��Github�ɂ���܂��B

retrospectiveapp̃XN[LXg retrospectiveapp�̃X�N���[���L���X�g

�@�u���g���X�y�N�e�B�u�v�Ƃ����̂̓A�W���C���\�t�g�J���ɗǂ��g�����@��1�‚Ȃ̂ł����A�e�C�e���[�V�����i�������ԁj���ƂɊJ����锽�ȉ�̂��Ƃł��B�e�����o�[�́u�ǂ��������Ɓv�u�����������Ɓv�Ȃǂ��|�X�g�C�b�g�ɏ����o���A�O���[�v���Ƃɕ������肵�Ȃ���c�_���邱�ƂŁA����̃C�e���[�V�����Ɍ��������P�_��T���o���Ƃ�����@�ł��B

�@�ł͎��ۂɃR�[�h�̈ꕔ�����Ă݂܂��傤�B

�܂����N���C�A���g�T�C�h�̃R�[�h�ł��B

pusher = new Pusher(Pusher.key);
pusher.subscribe(Pusher.channel);
pusher.bind('note-create', function(note) {
  generateNote(note);
});
pusher.bind('note-destroy', function(data) {
  $("#note_"+data.id).remove();
});
pusher.bind('note-update', function(note) {
  updateNote(note);
});
pusher.bind('note-softupdate', function(note) {
  updateNote(note);
});

�@1�s�ڂ́upusher = new Pusher(Pusher.key);�v��WebSocket����Pusher�I�u�W�F�N�g���쐬���܂��B1�Ԗڂ̈����́gPusher.key�h�Ƃ����Ƃ���ɂ�Pusher�ɃT�C���A�b�v�������ɗ^������L�[������U��܂��B

�@������2�s�ڂ́upusher.subscribe(Pusher.channel)�v�Ƃ����Ƃ���Ƀ`���l����������U��܂��B�u�`���l�����v�Ƃ�����������Ȃ����t���o�܂������A�����Pusher�ɂ�����PubSub���f�����������邽�߂̎d�g�݂ł��B�u�u���[�h�L���X�g�v�Ƃ����̂̓T�[�o�ɐڑ����Ă���u���E�U�̂��ׂĂɃ��b�Z�[�W�𑗂邱�Ƃł����A���ۂɂ͓���̃��[�U�[�ɂ̂݁A����̏��𑗂�̂����ʂł��B�����ł܂����[�U�[���`���l��A�Ɏ��g��o�^�i���̂��Ƃ�Subscribe�ƌĂт܂��j���A�f�[�^�̑����́i���̏ꍇWeb�T�[�o�j�̓`���l��A�ɂ̂݃f�[�^���������܂��i���̂��Ƃ�Publish�ƌĂт܂��j�B�`���l�����ɉ��𓖂Ă邩�͐l���ꂼ��ł��B�e�u���O�G���g���[���ƂɁublog_posts_1_comments�v�̂悤�ȃR�����g�`���l�����‚��Ă��ǂ��ł����A���[�U�[���ƂɃ`���l���������蓖�ĂĂ݂Ă��ʔ�����������܂���B

�@3�s�ڈȍ~�upushere.bind('�C�x���g��', function(note) {});�v�̂悤�ȃR�[�h�������Ă��܂��BWebSocket�ɂ͂��Ƃ��Ɓuonmessage�v�Ƃ����C�x���g�n���h��������̂ł����A����ɂ�WebSocket���瑗���Ă���f�[�^���ׂĂɔ������܂��B��������ƃf�[�^�̎�ނɂ���ă��W�b�N�𕪂��邽�߂�if���������R�[�h�ɂȂ��Ă��܂������ł��B

�@������Pusher�ł̓C�x���g���ƂɃo�C���h���郂�f�����̗p���邱�ƂŃR�[�h���ׂ����܂Ƃ߂₷���Ȃ��Ă��܂��B��̗�ł͊e���[�U�[�������ŃR�[�h���`���Ă��܂����APusher���g���ŋ߂̃o�[�W�����i1.6�j�́u�v���[���X�@�\�v�ŃC�x���g�𑽗p���Ă��܂��B�ǂ��������Ƃ��Ƃ����ƁA������Subscribe���Ă���`�����l���ɁA�ق��̃����o�[���ڑ�����Ɓupusher:member_added�v�A�ؒf���ꂽ���ɂ� �upusher:member_removed�v�Ƃ������𑗂�悤�ɂ��Ă��܂��B

�@�����T�[�o�T�C�h�̃R�[�h�̔����ł��B�T�[�o�T�C�h�̗�ɂ�Sinatra�Ƃ���Ruby���̌y��Web�t���[�����[�N���g���Ă��܂��B

PUSHER_CHANNEL = 'retrospectiveapp-' + Sinatra::Application.environment.to_s
put '/notes/:id/softupdate.json' do
  content_type 'text/json', :charset => 'utf-8'
  Pusher[PUSHER_CHANNEL].trigger_async('note-softupdate', params[:note].to_json, params[:socket_id])
  params[:note].to_json
end

�@�����ł��`���l���ƃC�x���g���ƂɃf�[�^��Push���Ă���̂�������ł��傤���H ���̗�ł�Pusher�Ƃ���Ruby�p�̃��C�u�������g���Ă��܂����A���̂ق�������̃��C�u������������Ă��܂��B�܂��A����̌���̃��C�u���������݂��Ȃ��ꍇ�ł��A���ʂ�HTTP�N���C�A���g���g����Push�”\�ł��B

�@���ہAPusher�ɃA�J�E���g���쐬����ƁA�ȉ��̂悤�ȃR�}���h���\������A������R�}���h�v�����v�g��ŃR�s�[���y�[�X�g���邱�Ƃ�Push���邱�Ƃ��”\�ł��B

curl -d "hello world" \
"http://api.pusherapp.com/apps/app_id/channels/test_channel/events?"\
"auth_version=1.0&"\
"auth_key=94132f5d219216&"\
"body_md5=01eeed093cb22bb8f5acdc3&"\
"auth_timestamp=1287600207&"\
"name=my_event&"\
"auth_signature=4205808619016f070384ef5"

�@Pusher�ł͂��̂ق��ɂ��A�݂Ȃ���̊J���ɖ𗧂ƒf�o�b�M���O�p�R���\�[����A�ǂꂮ�炢�̃��b�Z�[�W����ڑ����������������O���t�Ō��邱�Ȃǂ��ł��܂��B���Ј�x�o�^���Ă������ŐF�X�����Ă݂Ă��������B

XMPP�AAMQP�ASTOMP�Ƃ͉����Ⴄ�́H

�@�uPubSub�v�Ƃ��u�v���[���X�v�ȂǂƂ��������t���o�Ă������_�ŁA�u������Ă܂���XMPP(Extensible Messaging and Presence Protocol)����Ȃ��H�v�Ǝv��ꂽ�ǎ҂������̂ł͂Ȃ����Ǝv���܂��B

�@XMPP��10�N�ȏ�̗��j�����ƒv���g�R���ł����ɁAExtensible�Ƃ��镪�A�@�\���L�x�ł��B

�@XMPP���u���E�U����g�����߂�JavaScript���C�u�����Ƃ��ẮABOSH(Bidirectional-streams Over Synchronous HTTP)�Ƃ���Comet�Ɣ��Ɏ����v���g�R�����g�p����Strophe�Ƃ����̂��L���Ȃ̂ł����A���N�̎n�߂ɊJ���Ҍ������[�����O���X�g��WebSocket�T�|�[�g�\��𕷂����Ƃ���A�u�����ƃh���t�g���ł܂��Ă���v�Ƃ̂��Ƃł����B

�@����XMPP���u���E�U�ォ��g�����Ƃɋ�����������́AStrophe���A�G���^�[�v���C�Y�Ȋ‹��ł����Kaazing���g�����Ƃ������߂��܂��BKazzing�Ђ́AChromium��WebSocket����������O����AFlashSocket��Long Polling���g�p�����G�~�����[�V�����‹���񋟂��Ă����ɁAXMPP�ASTOMP�AAMQP�p��JavaScript���C�u�������񋟂��Ă���͂��ł��B���Ȃ݂�Kaazing�Ђ�WebSocket�̕��y�ɂ��M�S�Ȃ悤�ŁA����������N��12����Kaazing�Ђ̎�Â���g���[�j���O�ɎQ�����AWebSocket�Ɋւ���m���������ł������񓾂܂����B

�@STOMP(Streaming Text Oriented Message Protocol)�ɂ‚��Ă̓T�[�o�T�C�h��ActiveMQ���A�N���C�A���g�T�C�hJavaScript���C�u�����Ƃ��Ă�stomp-websocket�Ƃ����̂�WebSocket���T�|�[�g���Ă��܂��B

�@AMQP(Advanced Message Queuing Protocol)�Ɋւ��Ăł����APusher�̓�����WebSocket�T�[�o���X�P�[���A�E�g�����邽�߂̎�i��1�‚Ƃ���RabbitMQ���g�p���Ă��܂��B

�@�����X�^���_�[�h���b�Z�[�W���O�v���g�R����WebSocket�̈Ⴂ�ł����A��������Pusher�́A������Web�T�[�o�Ƃ̃C���e�O���[�V�����̂��₷������Ԃ̏d�_�ɒu���Ă��邱�Ƃł��B�܂�Pusher�̓N���E�h�T�[�r�X�Ƃ��Ē񋟂��Ă��邽�߁A�e�������O�Ń��b�Z�[�W���O�T�[�o�𗧂��グ�Ȃ��Ă��ǂ��Ƃ����̂�������1�‚ł��B

�@���āA����͂����܂łł��BWebSocket�̕ς�葱����d�l�̖��A�u���E�U�����̏󋵂ɉ����āA�������������グ���uPusher�v�ɂ‚��Ă��Љ�܂����B�����WebSocket�̎���𑽂߂Ɏ��グ�‚AWebSocket�̍���̉”\���ɂ‚��Ă̎��̗\�z�������Ă݂����Ǝv���܂��B


�O�̃y�[�W�� 1|2 �@�@�@�@�@�@

Copyright © ITmedia, Inc. All Rights Reserved.

'; this.insertTarget = document.querySelector('#cmsBody .subscription') || document.querySelector('#cmsBody .inner'); }; BodyAdIMSWithCCE.prototype = Object.create(BodyAdContent.prototype); BodyAdIMSWithCCE.prototype.activate = function () { refreshGam('InArtSpecialLink'); } // global reference window.itm = itm; //entry point BodyAdEventBase.polyfill(); const bodyAdManager = BodyAdManager.getInstance(); bodyAdManager.addEventListener(BodyAdManager.EVENTS.READY, function (ev) { bodyAdManager.loadAdvertise(); }); bodyAdManager.init(); })();
�X�|���T�[����̂��m�点PR

���ڂ̃e�[�}

Microsoft  WindowsőO2025
AI for GWjAO
[R[h^m[R[h Zg by IT - ITGWjArWlX̒SŊ􂷂gD
Cloud Native Central by IT - XP[uȔ\͂gD
�V�X�e���J���m�E�n�E �y�����i�r�zPR
���Ȃ��ɂ������߂̋L��PR

RSS�ɂ‚���

�A�C�e�B���f�B�AID�ɂ‚���

���[���}�K�W���o�^

��IT�̃��[���}�K�W���́A �������A���ׂĖ����ł��B���Ѓ��[���}�K�W�������w�ǂ��������B