ã©ãããããããã¯ã©ã€ã¢ã³ãã«äºéæ¥ç¶ãçºçãïŒã€ãŸãããã¹ãŠã®ãã³ãã©ãŒã2ååŒã³åºãããŸãïŒãèªåã§ç¶æ³ãåçŸã§ããŸããã§ãããããã°ã¬ããŒããåä¿¡ãç¶ããŸããæ¢ã«æ¥ç¶ãããŠãããšãã«ãsocket.socket.connectïŒïŒãåŒã³åºããå Žåã®åäœã¯ãŸã£ããåãã§ãããœã±ããïŒwebsocketãšflashsocketã§ãã¹ãæžã¿ïŒ
ã¯ã€ãã¯ããã¯ãšããŠããæ°ããæ¥ç¶ã匷å¶ãããã䜿çšã§ããŸãïŒèª€ã£ãæ§æ
ãŸããã¢ããªã±ãŒã·ã§ã³ã§ãã®ãã°ã確èªããŸããã
次ã¯åçŸã§ããã WebSocketæ¥ç¶ã®FFã§ãããã€ãã®ãšã©ãŒãçºçããŸããã ãã®åŸã次ã
ãš3ã€ã®åæ¥ç¶ã€ãã³ããçæãããŸããã ãã®åŸã3ã€ã®æ°ããæ¥ç¶ã確ç«ããããã©ãŠã¶ã¯1ã€ã§ã¯ãªã3ã€ã®ã¡ãã»ãŒãžãåä¿¡ããŸããã
ãã¶ããåæ¥ç¶ããžãã¯ã«ããã€ãã®ãã°ããããŸããïŒ 1ã€ã§ã¯ãªãè€æ°ã®åæ¥ç¶ãçæããäœãã
WebSocketïŒFF 3.6ãªã©ïŒããµããŒãããŠããªãå€ããã©ãŠã¶ãŒã§ãdom readyã€ãã³ãïŒjQueryã® "$ïŒïŒ"ïŒã§socket.ioãåæåãããšè€æ°ã®æ¥ç¶ãçºçããåŸã®window.loadã§åæåãããšããåé¡ãçºçããŸãããã€ãã³ãã¯ããŸããã ãã®ç¹å®ã®åé¡ã¯äžè²«ããŠåçŸå¯èœã§ããããšãããããŸããã ãããããªããèŠãŠãããã®ãšåãã§ãããã©ããã¯ããããŸããããçç¶ã¯éåžžã«äŒŒãŠããŸãã
ããã§ãåãåé¡ã åé¡ã¯ããµãŒããŒãäœããã®çç±ã§ã¯ã©ãã·ã¥ããŠããé»æºãåã³ãªã³ã«ãªã£ãå Žåãåæ¥ç¶ãããšæ¯ån +1ã®å¿çãçºçããããšã§ãã ãããã£ãŠã3ã€ã®ãµãŒããŒãã¯ã©ãã·ã¥ãããšãããšãåãµãŒããŒã®éä¿¡ã§4ã€ã®å¿çãè¿ãããŸãã ããŒãžãæŽæ°ãããšåé¡ã解決ããŸãã 誰ããããã«å¯Ÿãã解決çãèŠã€ããŸããã[äžæçã§ãã£ãŠã]
ããã¯æ°žç¶çãªè§£æ±ºçã§ã¯ãªããããããŸããããåã€ãã³ããåå¥ã«ãã€ã³ããããèªååæ¥ç¶ã§éè€ã®åé¡ã解決ãããããã«èŠããããã«ã³ãŒããåé 眮ããŸãã
me.socket.on('connect', function () {
});
me.socket.on('message', function(data) {
});
me.socket.on('disconnect', function() {
});
ãã£ãããããWiresharkãã³ããä»ããŠ1é±éãããã°ããåŸãç§ã¯ãªããšãçç±ãèŠã€ããŠãã®ãã°ãåçŸããããšãã§ããŸããã
ã€ãŸããåæ¥ç¶ããžãã¯ã¯éåžžã«å£ãããããã®ã§ãã ããã¯ã䞊è¡ããŠå®è¡ã§ããå€ãã®ã¿ã€ããŒã«äŸåããè€æ°ã®åæ¥ç¶ã«ã€ãªãããŸãã ãã®è¡https://github.com/LearnBoost/socket.io-client/blob/master/lib/socket.js#L511ããã®ãã°ã®äž»ãªçç±ã§ãã
å®ç掻ã§ã¯ãããã¯ãµãŒããŒã®é床äœäžã«ãã£ãŠåçŸãããŸãã-å°ãªããšãæ°ç§éã¯å¿çããŠãã ããã
ããã¯ãnode.jsã®è² è·ãé«ããå¿çãé
ããå ŽåããããŸãã
ãŸãã¯ãäžéšã®ãããã¯ãŒã¯ã®é床äœäžããã®ãããªåäœã«ã€ãªããå¯èœæ§ããããŸãã
ãµãŒããŒã®åèµ·ååŸã«ãåçŸã§ããŸãã
ãã®è¡ïŒsocket.jsã511ïŒïŒ
self.reconnectionTimer = setTimeoutïŒmaybeReconnectãself.reconnectionDelayïŒ;
æ¥ç¶åŒã³åºãåŸã«ã€ãã³ããã¹ã±ãžã¥ãŒã«ããŸãã ãŸããæ¥ç¶å¿çãå°ãªããšã1ç§éé 延ãããšãæ¥ç¶å¿çãããªã¬ãŒãããæ°ããåæ¥ç¶ããã¥ãŒã«å ¥ããããŸãã 2ç§åŸããã1ã€è¿œå ãããŸãã
ç§ã¯ä¿®æ£ãè¡ããŸãããããã¹ããããŠããããããŸããã£ããããŠããªãããã«èŠããŸãã äž»ãªåé¡-maybeReconnecté¢æ°ã«å¯ŸããŠã©ã®ã³ãŒã«ããã¯/ã¿ã€ããŒãåæã«å®è¡ã§ããããæšè«ããæ¹æ³ã
ãã®è¡ïŒ https ïŒ
Socket.ioã¯ã©ã€ã¢ã³ãã¯ãã¹ããŒããã·ã³ã䜿çšããããã«ãªãã¡ã¯ã¿ãªã³ã°ãããå Žåãæšè«ãã¯ããã«ç°¡åã«ãªãå¯èœæ§ããããŸãã çŸåšãç¶æ
ã¯ããŸããŸãªãã©ã°ïŒæ¥ç¶ãæ¥ç¶ãåæ¥ç¶ãªã©ïŒã«åæ£ããŠããŸãã ãããŠãå€ãã®æ©èœã§ããifïŒïŒself.reconnectingïŒããä»ã®å€ãã®ã¬ãŒããèŠãŸããã
ã¹ããŒããã·ã³ã¯ããã®ããžãã¯ãåçŽåããŠãç¶æ
ãšã€ãã³ãã®ã»ãããæã€ããšãã§ããŸãã ãŸããã¿ã€ããŒã¯ã€ãã³ããçºçãããããã«ã®ã¿äœ¿çšã§ããŸãã ãã®ã€ãã³ãã誀ã£ãç¶æ
ã«éããå Žåãã¹ããŒããã·ã³ã¯ãã®ã€ãã³ããç¡èŠããã ãã§ãæ°ã«ããå¿
èŠã¯ãããŸããã
JSã«é©ããSTMã¯èŠã€ãããŸããã§ããããRubyã®STMã¯JSã«ç°¡åã«ç§»æ€ã§ããŸãïŒ https ïŒ
ãã®åé¡ã修埩ããã«ã¯ãééããªã+1ããŸãã ç§ã¯socket.ioãŸãã¯socket.io-clientãçŽæ¥å€æŽããã«ãã®åé¡ã®åé¿çãèŠã€ããããšåãçµãã§ããŸããããæ®å¿µãªãããç§ã確å®ã«æãã€ããå¯äžã®æ¹æ³ã¯ãåæ¥ç¶ãç¡å¹ã«ããããšã§ãã ããã¯ééããªãè¯ã解決çã§ã¯ãããŸãããç¹ã«ã¢ãã€ã«ããã€ã¹ã®äœ¿çšãå¢ãããšãåæ¥ç¶ã¯å€§ããªèŠä»¶ã«ãªããŸãã
ãããéçºè ã®åªå ãªã¹ãã«ã©ã®ããã«å«ãŸãããã誰ããç¥ã£ãŠããŸããïŒ
ããã ãã®åé¡ã¯åé¡ãã3rd-Edenã«å²ãåœãŠãããŠããããã§ãïŒ https ïŒ
ã¯ã©ã€ã¢ã³ãã®ä¿®æ£ãè¡ãããã«ãªã¯ãšã¹ããéä¿¡ããŸããã 0.8.4ã§æ£åžžã«åäœããä»ã®ããŒãžã§ã³ã§ãæ£åžžã«åäœããŸãã ãã ãããã³ãã·ã§ã€ã¯ã«AJAXïŒãŸãã¯CORSïŒã䜿çšãããœãŒã¹æ©èœãç¡å¹ã«ããå¿ èŠããããŸãã 詳现ã«ã€ããŠã¯ã https ïŒ
ãã®ãããªå€ãåé¡ã埩掻ãããŠãã¿ãŸããã ç§ã¯socket.ioã®ææ°ããŒãžã§ã³ã䜿çšããŠããŸãïŒãŸãã¯ãå°ãªããšããnpm install socket.ioãå®è¡ããŸããïŒã ãã®åé¡ã¯ãŸã çºçããŠããŸããsocket.ioãšnode.jsã¯å šäœãšããŠæ¯èŒçæ°ããã§ãã ãŸããæåã®æ¥ç¶ïŒäžåºŠã«ããçºçããªãã£ã2ã€ã®ãã¡ïŒã§èªã¿åããšã©ãŒãçºçããããšããããšããåé¡ããããŸããã ç§ãã¯ãªã¹ãšèšã£ãŠããã®ãæ£ãããã°ãããªãã®ä¿®æ£ã¯ã³ããããããã®ã§ãããèµ·ãããªãã¯ãã§ãããéèŠãªèŠçŽ ãèŠéããªãéããããã§ãèµ·ãããŸããïŒ
ç·šé-
ããã¯ã¯ãªã¹ãã©ãŒã¯ãããsocket.ioã®ããã§ããããä¿®æ£ããŸããããä¿®æ£ã¯å ã®socket.ioã«ã³ããããããŠããŸããã§ãããïŒ
@JTallis @gdizãšåãåé¡ãããã圌ã®ææ¡ã¯ããŸããããŸããã åé¡ãé¡äŒŒããŠããå Žåã¯ãè©ŠããŠã¿ãŠãã©ã®ããã«æ©èœãããããç¥ãããã ããã
ææ°ããŒãžã§ã³ã§ãããšç§ãä¿¡ããŠãã0.9.16ã§ããã®åé¡ãçºçããŠããŸãã gdizã¯ãããé²ãããã«ã©ã®ããã«åé¿ããŸããïŒ å®å šã«ã¯ç解ããŠããŸããã§ããã
omg ...ã¢ããªã®äœãåé¡ã«ãªã£ãŠããã®ããæ¥ç¶ã倱ãããŠæŽæ°ãããåŸã«ãµãŒããŒãšã¯ã©ã€ã¢ã³ãéã®ã¡ãã»ãŒãžã倧éã«éè€ããçç±ãç解ããããã«æ°æéãè²»ãããŠããŸã...
0.9.16ã䜿çšããŠãã®åé¡ã確èªã§ããŸã
åããã¡ã€ã«node.jsãã¡ã€ã«ã§æ¬¡ã®ã¯ã©ã€ã¢ã³ããšãµãŒããŒã®ã³ãŒãã䜿çšããŠãäºéæ¥ç¶ã€ãã³ããèªç±ã«ååŸã§ããŸãã
"use strict";
var server = require('socket.io');
var client = require('socket.io-client');
setTimeout(function () {
var io = server.listen(8888);
io.of('/chat').on('connection', function (socket) {
console.log('Server: /chat connection');
});
io.sockets.on('connection', function (socket) {
console.log('Server: connection');
});
}, 2000);
var socketAddress = 'http://localhost:8888/chat';
var socket = client.connect(socketAddress);
socket.on('connect', function () {
console.log("Client: connect");
});
socket.on('error', function () {
console.log("Client: error");
socket.socket.reconnect();
});
å¥åŠãªããšãããã€ããããŸãã
1ïŒURLããã/ chatããåé€ããŠåå空éæ¥ç¶ãéåžžã®æ¥ç¶ã«å€æŽãããšãæ¥ç¶ã€ãã³ãã¯1ã€ã ãã«ãªããŸãã
2ïŒãµãŒããŒãããã«èµ·åããsetIntervalæéããŒãã«å€æŽãããšãåææ¥ç¶ãšã©ãŒã¯çºçãããæ¥ç¶ã€ãã³ãã¯1ã€ã ãã«ãªããŸãã
ããã«å¯Ÿããåé¿çãŸãã¯ä¿®æ£ã¯ãããŸããïŒ
åãåé¡ãæ±ããŠããŸãã socket.ioãµãŒããŒãäºæããåèµ·åããå Žåãã¯ã©ã€ã¢ã³ãã¯2ååæ¥ç¶ããããããã¹ãŠã®ã¡ãã»ãŒãžãã¯ã©ã€ã¢ã³ãã«ãã£ãŠ2ååŠçãããŸãã æ¬åœã«ã¯ã©ã€ã¢ã³ãåŽã§ç§ã®ã«ãŠã³ããå°ç¡ãã«ããŸãã
1.0.0-pre2ãªãªãŒã¹ã§ãåãåé¡ããããŸãã socket.ioãåèµ·åãããšã2ã€ã®ã400BadRequestãããããŸãã
ä»æ¥ã¯ããã調ã¹ãŸãïŒ
ä»æ¥ã¯ããã調ã¹ãŸãïŒ
詳现ããã°ãç»é¢ãå¿ èŠãªå Žåã¯ãé æ ®ãªãïŒ æ¯åã§ã¯ãããŸããã
2755è¡ç®ã®1.0.6ã®ã¯ã©ã€ã¢ã³ãsocket.io.jsïŒ
Request.prototype.create = functionïŒisBinaryãsupportsBinaryïŒ{
var xhr = this.xhr = new XMLHttpRequestïŒ{agentïŒthis.agentãxdomainïŒthis.xd}ïŒ;
..ã
}
èšå®ããã®ã¯è¯ãèãã ãšæããŸãïŒ
xhr.timeout = Manager._timeoutã®ã€ã³ã¹ã¿ã³ã¹-10ããªç§
ãã®ããã«ããŠãã¯ã©ã€ã¢ã³ãåŽã§è€æ°ã®ã¯ã©ã€ã¢ã³ããœã±ãããäœæãããã®ãé²ããŸãã
ãµãŒããŒåŽã§ã¯ãè€æ°ã®ãœã±ãããããŒãããŒãã¿ã€ã ã¢ãŠãã«ãªããŸãã
åºæ¬çãªsocket.ioã®ãGettingStartedãã®äŸïŒhttp://socket.io/get-started/chat/ïŒã«ã¯ããã®ããã«ãœã±ããæ¥ç¶ã®åé¡ããããŸãã
次ã®ããããïŒç¢ºçã®æé ïŒã§ã¯ãåäžã®ãã©ãŠã¶ã¿ãæ¥ç¶ããããã«ãœã±ããæ¥ç¶ã«ãªããŸãã
aïŒlocalhostïŒ3000ã«æ¥ç¶ãããšãæåã®ãã©ãŠã¶ã¿ãèªäœãã
bïŒlocalhostïŒ3000ã«æ¥ç¶ãããšã2çªç®ã®ãã©ãŠã¶ã¿ããã
cïŒïŒlocalhostïŒ3000ïŒã«æ¥ç¶ããåã«ããã©ãŠã¶ã³ã³ãœãŒã«ãéãããŸãŸã«ããŸã
è¿œå ã®æèŠïŒ
io.on('connection', function(socket){
console.log('a user connected: ' + socket.id);
socket.on('disconnect', function(){
console.log('a user disconnected');
console.log(socket.nickname + ' has disconnected from the chat.');
});
});
socket.id
ã€ã®ãã©ãŠã¶ã¿ããªã¯ãšã¹ãããçºçãã2ã€ã®ç°ãªãMacãChromeãExpress 4.2ãããã³ææ°ã®socket.ioã䜿çšããŠããŸãã
2ã€ã®ãã°ã®äœæã«ã¯ã¿ã€ãã³ã°ã®éãããããŸãã æåã®ãã°ã¯ãChromeããloããã localhostïŒ3000 ãã«èªåå®äºãããšãã«çºçãã2çªç®ã®ãã°ã¯Enterãã¿ã³ãæŒãããšãã«çºçããŸãã
ãXusersconnectedãã³ã³ãœãŒã«ãã°ã¡ãã»ãŒãžããããèªåã®ãã©ãŠã¶ã2ã€ãŸãã¯3ã€ã®ãŠãŒã¶ãŒæ¥ç¶éç¥ãããªã¬ãŒãããšãã«éåžžã«è¿·æã§ããã
ããã§ãåé¡ã®è§£æ±ºçãconsole.logè¡ãã³ã¡ã³ãã¢ãŠãããããšãåçœããå¿ èŠããããŸãã ããããçãããè¯ãä»äºãç¶ããŠãã ããã
ææ°ããŒãžã§ã³ã§ããã®åé¡ãçºçããŸãã ããã«é¢ããæŽæ°ã¯ãããŸããïŒ
1.0ã§ããã®åé¡ãçºçããŠããŸã
å šç¶åçŸã§ããŸããã 誰ããå®å šãªäŸãæçš¿ã§ããŸããïŒ
2æ44å50ç§AMã¬ãã¯ã¹Pechlerã§é2014幎11æ14æ¥ã«ã¯[email protected]
æžããŸããïŒ
1.0ã§ããã®åé¡ãçºçããŠããŸã
â
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/Automattic/socket.io/issues/474#issuecomment -62934229
ã
ææ¥ãç°¡åãªäŸãäœæã§ãããã©ããã確èªããŸãã
åçŸãããããããŸããã ç§ã¯socket.io1.3.5ãšexpress4.12.4ã䜿çšããŠããŸãã
Expressã¢ããªã¯127.0.0.1:3000ã«ããããã©ãŠã¶ãŒãéããŠIPã¢ãã¬ã¹ãå ¥åãããšãsocket.ioã¯1ã€ã®WebSocketã®ã¿ãéããŸãã
abc.comãªã©ã®ãã¡ã€ã³ãããã127.0.0.1ã«è»¢éããŸãã ãã©ãŠã¶ã§abc.comãéããšãindex.htmlãã¡ã€ã«ã«æ¬¡ã®è¡ããããŸãã
<script>
var socket = io('http://localhost:3000/mysql');
socket.on('processlist', function (data){
console.log(data);
});
</script>
ããã«ããã2ã€ã®WebSocketãéããŸãã
ç§ã¯ãŸã ãããã·ã§nginxãè©ŠããŠããŸããã è©ŠããŠã¿ããããã«ãç¥ããããŸãã
ãŸã ãã®åé¡ãçºçããŠããŸãã ç§ã«ãšã£ãŠã¯ããµãŒããŒã®åèµ·åæã«çºçããŸãã-ãµãŒããŒããã®æåã®æ¥ç¶ã€ãã³ããçºçãããšãã«socket.onïŒ 'message'ïŒã€ãã³ããã³ãã©ãŒãã¢ã¿ããããŠããŸãããã¯ã©ã€ã¢ã³ããéããŠãããšãã«ãµãŒããŒãåèµ·åããå Žåããã®ã€ãã³ãã¯è€æ°åçºçããŸããïŒããå€ãã®æéã¯ã©ã€ã¢ã³ãããµãŒããŒã®åèµ·åãåŸ æ©ããŠããæéãé·ããªããŸããïŒã
ä»ã®ãšããç§ã®ä¿®æ£ã¯ããœã±ããã€ãã³ãã®ã¢ã¿ãããããããŠã³ã¹ãããŠã次ã®ããã«æåã®ãµãŒããŒæ¥ç¶ã§ã®ã¿çºçããããã«ããããšã§ãã
client.socketEventsAttached = false;
socket.on('connect',function(){
if (!client.socketEventsAttached){
attachSocketEvents();
}
});
@gdizãææ¡ããããã«ãã¡ãã»ãŒãžã€ãã³ããªã¹ããŒãsocket.onïŒ 'connect'ïŒãªã¹ããŒã®å€ã«é 眮ããããšãã§ããŸãã ãµãŒããŒãŸãã¯ã¯ã©ã€ã¢ã³ãã®æºåãæŽãåã«ãœã±ããã€ãã³ããçºçãããšããåé¡ãçºçããŸããã
@bbcollinsworthã¯ã©ã€ã¢ã³ããªããžã§ã¯ãã¯äœã§ããïŒ
æ°ããsocketioãšåºæ¬çãªäŸã§ãŸã ãã®åé¡ãçºçããŠããŸãã
åºæ¬çãªäŸã«åŸã£ãŠããŸã ãã®åé¡ãçºçããŠããŸãã
ç·šéïŒæ£ç¢ºã«æ£ãããã©ããã¯ããããŸããããä¿®æ£ãèŠã€ããŸããã åºæ¬çã«å¿ èŠãªã®ã¯äœ¿çšããããšã ãã§ã
io.once('connection', ...)
ã®ä»£ããã«
io.on('connection', ...)
@brandonraphael ïŒããšãã°ãhttpsïŒ//github.com/darrachequesne/socket.io-fiddleã«åºã¥ããŠïŒåé¡ãåçŸããäŸãæäŸããŠãæ°ããåé¡ãéããŠãã ããã
ããããŸã çºçããŠããŠãã¢ããªã§åé¡ãçºçããŠããæŽæ°
ãããã¯ãã°ã§ã-
0 | APIãµãŒããŒ| æ¥ç¶æžã¿!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! DKap3hUYFSpKBRr7AFgc 4351 2018-12-26 10:58:25
0 | APIãµãŒããŒ| æ¥ç¶æžã¿!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! VS98DBFVTNF6ifzmAFgd 4351 2018-12-26 10:58:25
4351ã¯ãŠãŒã¶ãŒIDã§ãããæ¥ç¶æ°ããŠãŒã¶ãŒ4351ã®å Žåã®2ã®ããã«éçã§ã¯ãããŸããã
å¥ã®ãã°ã«ã¯ãåããŠãŒã¶ãŒã®6ã€ã®æ¥ç¶ãåæã«è¡šç€ºãããŸãã
ãŸãããµãŒããŒäžã®ããã2ã€ã®ãœã±ããIDã確èªããæå¹ã§ããããšã瀺ããŠããŸãã ãã ããããã³ããšã³ãã¯ãåžžã«æåã®ãœã±ããIDã§ãããã®ãã¡ã®1ã€ã®ã¿ããªãã¹ã³ã§ããŸãã
ã©ããªå©ãã§ãæ¬åœã«çŽ æŽãããã§ãããã
åãã£ãŠæè¬ããŸãã
åºæ¬çãªäŸã«åŸã£ãŠããŸã ãã®åé¡ãçºçããŠããŸãã
ç·šéïŒæ£ç¢ºã«æ£ãããã©ããã¯ããããŸããããä¿®æ£ãèŠã€ããŸããã åºæ¬çã«å¿ èŠãªã®ã¯äœ¿çšããããšã ãã§ã
io.once('connection', ...)
ã®ä»£ããã«
io.on('connection', ...)
ããããããšã
ã¯ã©ã€ã¢ã³ãåŽã§äœ¿çšãããŠããããŒãžã§ã³ãå€æŽããåŸãåé¡ã¯è§£æ±ºãããŸããã å¥ã®ä¿®æ£ã¯ãåäžã®ãœã±ããIDã®ä»£ããã«éšå±ã䜿çšããããšã§ãã ãã¹ãŠã®ãœã±ããIDèªäœãéšå±ã§ããããšãããããŸãããå€æŽãããã®ã¯ããã¹ãŠã®ãœã±ããIDããŠãŒã¶ãŒã«ãŒã ã«é
眮ããæ°ããæ¥ç¶ã³ãŒãã®éšåã ãã§ããã
ãŠãŒã¶ãŒã¹ã©ãã°ãUser1ã§ãããšãããšãéšå±ã¯User1ã§äœæãããã¹ã©ãã°User1ãä»ãããã¹ãŠã®æ°ãããœã±ããæ¥ç¶ã¯éšå±User1å
ã«é
眮ãããŸããã
åãåé¡ãæ±ããŠããŠãããã¯ç§ã倢äžã«ãããŠããŸããã ã¯ã©ã€ã¢ã³ãã«ãã€ãã³ããªã¹ããŒãåç»é²ããŠããŸããã§ããã ç§ã®ã»ããã¢ããã§ã¯ãsocketioãšã³ããã€ã³ãããã¹ãããnodejsãµãŒããŒããããsocketioã¯ã©ã€ã¢ã³ããšããŠæ©èœããå¥ã®nodejsãµãŒããŒããããŸãã ç§èš£ã¯ãã¯ã©ã€ã¢ã³ãåŽãWebSocketãã©ã³ã¹ããŒãã«æ¥ç¶ãã forceNode
ã䜿çšããããš
// client side
const socket = io('<url>', {
transports: ['websocket'],
forceNode: true,
});
ç§ã¯ãããšåãåé¡ãæ±ããŠãããšæããŸãã ç§ã¯ãã£ããã«ãŒã ãæ§ç¯ããŠããŸããã誰ãããã®éšå±ã«åå ãããšãã
ãã¹ãŠããŸããããŸãããéšå±ãåºãŠããäžåºŠå ¥ããšãã€ã³ããã¡ãã»ãŒãžã_2å_éä¿¡ãããŸãã ããäžåºŠéšå±ãåºãŠ3åç®ã«å ¥ããšãã€ã³ããã¡ãã»ãŒãžã3ååºãããŸãã _åã_éšå±ãžã®ãã¹ãŠã®_åæ¥ç¶_ã¯ãéè€ããã€ã³ããã¡ãã»ãŒãžã«ãªããŸãã ãã ãã_ç°ãªã_éšå±ã«å ¥ããšã玹ä»ã¡ãã»ãŒãžã1åãã衚瀺ãããŸããã
io.once('connection', ...)
ããŠãããŸããããŸããã§ããã å®éãç§ã®ã€ãã³ãã¯ãã¹ãŠæ©èœããªããªããŸããã
ããããŠã³ã¹ãæ¹åŒã®äœ¿çšãæ©èœããŸããã§ããã ç¹°ãè¿ããŸãããç§ã®ã€ãã³ãã¯ã©ããç»é²ãããŠããŸããã
æåŸã«ã forceNode: true
ãªãã·ã§ã³ã®ã¯ã©ã€ã¢ã³ãåŽã®äœ¿çšãæ©èœããŸããã§ããã
ãµãŒããŒãšã¯ã©ã€ã¢ã³ãã®äž¡æ¹ã§2.2.0
ã䜿çšããŠããŸãã 足ããªããã®ã¯ãããŸããïŒ
åãåé¡ã«ã€ããŠçåã«æã£ãŠããŸããããæçµçã«ã¯ãã¯ã©ã€ã¢ã³ãã«once
ã®ã¿ãæ¥ç¶ããããã«æ瀺ããããšã圹ã«ç«ã¡ãŸããã
ãããã¯ã©ã€ã¢ã³ãã®ç§ã®èšå®ã§ãïŒ
var socket = io.connect("http://localhost:3000/test",
{ upgrade: false, transports: ['websocket'], reconnection: true, forceNew: false});
socket.once('connect', socketConn => {
socket.on('message', data => {
console.log(data);
});
});
ã¯ã©ã€ã¢ã³ãã¯connect
ã€ãã³ãã«å¯ŸããŠonce
ãšããŠç»é²ãããã ããªã®ã§ãã¯ã©ã€ã¢ã³ãå
ã®ä»ã®ã€ãã³ãã¯1åç»é²ãããŸãã ããã§ããµãŒããŒãã¯ã©ãã·ã¥ããå Žåãã¯ã©ã€ã¢ã³ãã¯ãµãŒããŒãžã®åæ¥ç¶ãè©Šã¿ãã ãã§ãæ°ããæ¥ç¶ãäœæããããšã¯ããŸããã ãµãŒããŒããå¿çãåãåããšããã«ãã¡ãã»ãŒãžã®åŠçãéå§ããŸãã
ãããã£ãŠã io.once
ã¯ããµãŒããŒåŽã§ã¯ãªããã¯ã©ã€ã¢ã³ãåŽã§èšå®ããå¿
èŠããããŸãã
ã¯ã©ã€ã¢ã³ã2.1ããŒãžã§ã³ã䜿çšããŠããŸãã éçºç°å¢ã§ããªã¬ãŒããã®ã¯éåžžã«ç°¡åã§ãã ããŒããµãŒããŒãåèµ·åãããã³ã«ïŒããšãã°nodemonã䜿çšããŠïŒãã¯ã©ã€ã¢ã³ãã¯åžžã«ããã€ãã®åæ¥ç¶ã€ãã³ããããªã¬ãŒããããã«æ¥ç¶ããŸãã ããããæ ¹æ¬çãªåå ãç解ããããšã¯ã§ããŸãã
ã¯ã©ã€ã¢ã³ã2.1ããŒãžã§ã³ã䜿çšããŠããŸãã éçºç°å¢ã§ããªã¬ãŒããã®ã¯éåžžã«ç°¡åã§ãã ããŒããµãŒããŒãåèµ·åãããã³ã«ïŒããšãã°nodemonã䜿çšããŠïŒãã¯ã©ã€ã¢ã³ãã¯åžžã«ããã€ãã®åæ¥ç¶ã€ãã³ããããªã¬ãŒããããã«æ¥ç¶ããŸãã ããããæ ¹æ¬çãªåå ãç解ããããšã¯ã§ããŸãã
ç§ãnodemonèªäœã䜿çšããã®ãšåãåé¡ãæ±ããŠããŸããã ããããæçµçã«ã¯ã once
ã®ã¿ãæ¥ç¶ããããã«ã¯ã©ã€ã¢ã³ãã«æ瀺ããããšã圹ã«ç«ã¡ãŸããã
äžèšã®è¿ä¿¡ã®ã³ãŒããè©ŠããŠãã ããã ããã¯ç§ãå©ãããµãŒããŒãåèµ·åãããã³ã«ãã¯ã©ã€ã¢ã³ãã¯æ°ããæ¥ç¶ãååŸããŠããŸãã
ç§ã®åé¡ã¯åçŽã§ãã
åãã¯ã©ã€ã¢ã³ãåŽã®ã¢ããªã2ã€ã®ã¿ãã§éããŠããŸããã ãã£ãš
ç§ãåãåé¡ãæ±ããŠããŸããã ããããç§ã«ãšã£ãŠã¯ãã¯ã©ã€ã¢ã³ãåŽã®ãã³ãã©ãŒãsocket.on('connection', cb)
ã³ãŒã«ããã¯é¢æ°å
ã«èª€ã£ãŠé
眮ããŸããã
ãã¢çšã®ã¹ããããã¯æ¬¡ã®ãšããã§ãã
client.jsïŒnode.jså ïŒ
const client = require('socket.io-client');
const socket = client('my_endpoint', {
transports: [ 'websockets' ]
});
socket.on('connect', () => {
console.log('connected');
socket.on('myEvent', (message) => {
console.log(`message: ${message}`);
});
});
åæãšåæ¥ç¶ãçºçãããšã socket.on('connect', cb)
å床åŒã³åºããã myEvent
ãã³ãã©ãŒã¯åãååã®2çªç®ã®ãã³ãã©ãŒãç»é²ããŸãã ãããã£ãŠããµãŒããŒãåã³myEvent
çºè¡ãããšãåãã¡ãã»ãŒãžã®2ã€ã®ã³ã³ãœãŒã«ãã°ãäœæãããŸãã
解決ããã«ã¯ãä»ã®ãã³ãã©ãŒãconnect
ãã³ãã©ãŒã®å€ã«é
眮ããå¿
èŠããããŸããã
const client = require('socket.io-client');
const socket = client('my_endpoint', {
transports: [ 'websockets' ]
});
socket.on('connect', () => {
console.log('connected');
});
socket.on('myEvent', (message) => {
console.log(`message: ${message}`);
});
ç§ã®æ··ä¹±ã¯ããµãŒããŒåŽãsocket.on
ã€ãã³ããconnect
ã€ãã³ãå
ã«é
眮ããæ¹æ³ãããã¥ã¡ã³ãã瀺ããŠããããšã«èµ·å ããŠãããšæããŸãã ããã¥ã¡ã³ãããã£ãšæ³šææ·±ãèªãã§ããªãã®ã¯ç§ã§ãããä»ã®èª°ããåãééããç¯ããå Žåã«åããŠããããããã«çœ®ããšæããŸããã
ãŸããnode.jsã§ãã®åé¡ãå ·äœçã«èŠããšããŠããããã¯ãã©ãŠã¶ãŒã§ãåé¡ã«ãªããšç¢ºä¿¡ããŠããŸãã
æãåèã«ãªãã³ã¡ã³ã
åºæ¬çãªäŸã«åŸã£ãŠããŸã ãã®åé¡ãçºçããŠããŸãã
ç·šéïŒæ£ç¢ºã«æ£ãããã©ããã¯ããããŸããããä¿®æ£ãèŠã€ããŸããã åºæ¬çã«å¿ èŠãªã®ã¯äœ¿çšããããšã ãã§ã
ã®ä»£ããã«