Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓƵ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
WebSocket ³¤Á¬½ÓÓ¦Óó¡¾°
 
  6601  次浏览      20
 2017-12-19 
 
±à¼­ÍƼö:
±¾ÎÄÀ´×ÔÓÚwww.qcloud.co,ÕâƪÎÄÕ·ÖÏíÒ»¸ö¼òµ¥µÄ¼ôµ¶Ê¯Í·²¼µÄСÓÎÏ·µÄÖÆ×÷£¬Ï£ÍûÄܶÔÏëÒªÔÚС³ÌÐòÖÐʹÓà WebSocket µÄ¿ª·¢ÕßÓаïÖú¡£

ûÊ´ò¿ªÐ¡³ÌÐò£¬ºÍ¸½½üµÄÈ˼ôµ¶Ê¯Í·²¼£¬ÏëÀ´¾ÍÀ´£¬Ïë×ß¾Í×ß¡£Ë­ÄܳÉΪÎäÁÖ¸ßÊÖ£¿£¡

΢ÐÅС³ÌÐòÌṩÁËÒ»Ì×ÔÚ΢ÐÅÉÏÔËÐÐС³ÌÐòµÄ½â¾ö·½°¸£¬ÓбȽÏÍêÕûµÄ¿ò¼Ü¡¢×é¼þÒÔ¼° API£¬ÔÚÕâ¸öƽ̨ÉÏÃæµÄÏëÏó¿Õ¼äºÜ´ó¡£

ÌÚѶÔÆÄõ½ÁËС³ÌÐòÄÚ²â×ʸñ£¬Ñо¿ÁËÒ»·¬Ö®ºó£¬·¢ÏÖ΢ÐÅÖ§³Ö WebSocket »¹ÊǺÜÖµµÃÍæζµÄ¡£Õâ¸öÌØÐÔÒâζ×ÅÎÒÃÇ¿ÉÒÔ×öһЩʵʱͬ²½»òÕßЭ×÷µÄС³ÌÐò¡£

Õû¸öÓÎÏ··Ç³£¼òµ¥£¬Á¬½Óµ½·þÎñÆ÷ºó×Ô¶¯Æ¥ÅäÔÚÏßÍæ¼Ò£¨Ã»ÓÐÔò·ÖÅäÒ»¸ö»úÆ÷ÈË£©£¬È»ºóÁ½È˽øÐмôµ¶Ê¯Í·²¼µÄ¶Ô¿¹ÓÎÏ·¡£µ±¶Ô·½½øÐÐÈ­Í·Ñ¡ÔñµÄʱºò£¬Í·Ïñ»áÐýת£¬Õâ¸ö¹ý³ÌʹÓà WebSocket »á±äµÃ¼òµ¥¿ìËÙ¡£

²¿ÊðºÍÔËÐÐ

Äõ½Á˱¾Ð¡³ÌÐòÔ´ÂëµÄÅóÓÑ¿ÉÒÔ³¢ÊÔ×Ô¼ºÔËÐÐÆðÀ´¡£

ÕûÌå¼Ü¹¹

С³ÌÐòµÄ¼Ü¹¹·Ç³£¼òµ¥£¬ÕâÀïÓÐÁ½ÌõÍøÂçͬ²½£¬Ò»ÌõÊÇ HTTPS ͨ·£¬ÓÃÓÚ³£¹æÇëÇ󡣶ÔÓÚ WebSocket ÇëÇ󣬻áÏÈ×ß HTTPS ºóÔÙÇл»Ð­Òéµ½ WebSocket µÄ TCP Á¬½Ó£¬´Ó¶øʵÏÖÈ«Ë«¹¤Í¨ÐÅ¡£

1. ×¼±¸ÓòÃûºÍÖ¤Êé

ÔÚ΢ÐÅС³ÌÐòÖУ¬ËùÓеÄÍøÂçÇëÇóÊܵ½ÑϸñÏÞÖÆ£¬²»Âú×ãÌõ¼þµÄÓòÃûºÍЭÒéÎÞ·¨ÇëÇ󣬾ßÌå°üÀ¨£º

Ö»ÔÊÐíºÍÔÚ MP ÖÐÅäÖúõÄÓòÃû½øÐÐͨÐÅ£¬Èç¹û»¹Ã»ÓÐÓòÃû£¬ÐèҪע²áÒ»¸ö¡£

ÍøÂçÇëÇó±ØÐë×ß HTTPS ЭÒ飬ËùÒÔÄ㻹ÐèҪΪÄãµÄÓòÃûÉêÇëÒ»¸öÖ¤Êé¡£

ÓòÃû×¢²áºÃÖ®ºó£¬¿ÉÒԵǼ΢ÐŹ«ÖÚƽ̨ÅäÖÃͨÐÅÓòÃûÁË¡£

2. ÔÆÖ÷»úºÍ¾µÏñ²¿Êð

¼ôµ¶Ê¯Í·²¼µÄ·þÎñÆ÷ÔËÐдúÂëºÍÅäÖÃÒѾ­´ò°ü³ÉÌÚѶÔÆ CVM ¾µÏñ£¬´ó¼Ò¿ÉÒÔÖ±½ÓʹÓá£

ÌÚѶÔÆÓû§¿ÉÒÔÃâ·ÑÁìÈ¡Àñ°ü£¬ÌåÑéÌÚѶÔÆС³ÌÐò½â¾ö·½°¸¡£

¾µÏñÒÑ°üº¬¡¸¼ôµ¶Ê¯Í·²¼¡¹ºÍ¡¸Ð¡Ïà²á¡¹Á½¸öС³ÌÐòµÄ·þÎñÆ÷»·¾³Óë´úÂ룬ÐèÒªÌåÑéÁ½¸öС³ÌÐòµÄÅóÓÑÎÞÐèÖظ´²¿Êð

3. ÅäÖÃ HTTPS

¾µÏñÖÐÒѾ­²¿ÊðÁËnginx£¬ÐèÒªÔÚ/etc/nginx/conf.dÏÂÐÞ¸ÄÅäÖÃÖеÄÓòÃû¡¢Ö¤Ê顢˽Կ¡£

ÅäÖÃÍê³Éºó£¬¼´¿ÉÆô¶¯ nginx¡£

nginx

4. ÓòÃû½âÎö

ÎÒÃÇ»¹ÐèÒªÌí¼ÓÓòÃû¼Ç¼½âÎöµ½ÎÒÃǵÄÔÆ·þÎñÆ÷ÉÏ£¬ÕâÑù²Å¿ÉÒÔʹÓÃÓòÃû½øÐÐ HTTPS ·þÎñ¡£

ÔÚÌÚѶÔÆ×¢²áµÄÓòÃû£¬¿ÉÒÔÖ±½ÓʹÓÃÔƽâÎö¿ØÖÆ̨À´Ìí¼ÓÖ÷»ú¼Ç¼£¬Ö±½ÓÑ¡ÔñÉÏÃ湺ÂòµÄ CVM¡£

½âÎöÉúЧºó£¬ÎÒÃÇÔÚä¯ÀÀÆ÷ʹÓÃÓòÃû¾Í¿ÉÒÔ½øÐÐ HTTPS ·ÃÎÊ¡£

5. Æô¶¯ WebSocket ·þÎñ

ÔÚ¾µÏñµÄ nginx ÅäÖÃÖУ¨/etc/nginx/conf.d£©£¬ÒѾ­°Ñ /applet/websocketµÄÇëÇóת·¢µ½http://127.0.0.1:9595 ´¦Àí¡£ÎÒÃÇÐèÒª°Ñ Node ʵÏÖµÄ WebSocket ·þÎñÔÚÕâ¸ö¶Ë¿ÚÀïÔËÐÐÆðÀ´¡£

½øÈë¾µÏñÖÐÔ´ÂëλÖãº

cd /data/release/qcloud-applet-websocket

ʹÓÃpm2 Æô¶¯·þÎñ£º

pm2 start process.json

6. Æô¶¯Î¢ÐÅС³ÌÐò

ÔÚ΢ÐÅ¿ª·¢Õß¹¤¾ßÖÐÐÞ¸ÄС³ÌÐòÔ´ÂëÖÐµÄ config.js ÅäÖ㬰ÑͨѶÓòÃûÐ޸ijÉÉÏÃæÉêÇëµÄÓòÃû¡£Íê³Éºóµã»÷µ÷ÊÔ¼´¿ÉÁ¬½Óµ½ WebSocket ·þÎñ½øÐÐÓÎÏ·¡£

ÅäÖÃÍê³Éºó£¬ÔËÐÐС³ÌÐò¾Í¿ÉÒÔ¿´µ½³É¹¦´î½¨µÄÌáʾ£¡

ΪʲôҪÓà WebSocket

ʹÓô«Í³µÄ HTTP ÂÖѯ»òÕß³¤Á¬½ÓµÄ·½Ê½Ò²¿ÉÒÔʵÏÖÀàËÆ·þÎñÆ÷ÍÆË͵ÄЧ¹û£¬µ«ÊÇÕâÀ෽ʽ¶¼´æÔÚ×ÊÔ´ÏûºÄ¹ý´ó»òÍÆËÍÑÓ³ÙµÈÎÊÌâ¡£¶ø WebSocket Ö±½ÓʹÓà TCP Á¬½Ó±£³ÖÈ«Ë«¹¤µÄ´«Ê䣬¿ÉÒÔÓÐЧµØ¼õÉÙÁ¬½ÓµÄ½¨Á¢£¬ÊµÏÖÕæÕýµÄ·þÎñÆ÷ͨÐÅ£¬¶ÔÓÚÓеÍÑÓ³ÙÓÐÒªÇóµÄÓ¦ÓÃÊÇÒ»¸öºÜºÃµÄÑ¡Ôñ¡£

Ä¿Ç°ä¯ÀÀÆ÷¶Ô WebSocket µÄÖ§³Ö³Ì¶ÈÒѾ­ºÜºÃ£¬¼ÓÉÏ΢ÐÅС³ÌÐòµÄƽ̨֧³Ö£¬ÕâÖÖ¿ÉÒÔ¼«´óÌá¸ß¿Í»§¶ËÌåÑéµÄͨÐÅ·½Ê½½«»á±äµÃ¸ü¼ÓÖ÷Á÷¡£

Server ¶ËÐèҪʵÏÖ WebSocket ЭÒ飬²ÅÄÜÖ§³Ö΢ÐÅС³ÌÐòµÄ WebSocket ÇëÇó¡£¼øÓÚ SocketIO ±»¹ã·ºÊ¹Ó㬼ôµ¶Ê¯Í·²¼µÄС³ÌÐò£¬ÎÒÃÇÑ¡ÓÃÁ˱ȽÏÖøÃûµÄ SocketIO ×÷Ϊ·þÎñ¶ËµÄʵÏÖ¡£

Socket IO µÄʹÓñȽϼòµ¥£¬½öÐ輸ÐдúÂë¾Í¿ÉÆô¶¯·þÎñ¡£

export class Server {

init(path: string) {
/** Port that server listen on */
this.port = process.env.PORT;

/** HTTP Server instance for both express and socket io */
this.http = http.createServer();

/** Socket io instance */
this.io = SocketIO(this.http, { path });

/** Handle incomming connection */
this.io.on("connection", socket => {
// handle connection
});
}

start() {
this.http.listen(this.port);
console.log(`---- server started. listen : ${this.port} ----`);
}
}

const server = new Server();
server.init("/applet/ws/socket.io");
server.start();

µ«ÊÇ£¬SocketIO ºÍһЩÆäËüµÄ·þÎñÆ÷¶ËʵÏÖ£¬¶¼ÓÐÆäÅäÌ׵Ŀͻ§¶ËÀ´Íê³ÉÉϲãЭÒéµÄ±àÂë½âÂë¡£µ«ÊÇÓÉÓÚ΢ÐŵÄÏÞÖÆ£¨²»ÄÜʹÓà window µÈ¶ÔÏ󣩣¬ SocketIO µÄ¿Í»§¶Ë´úÂëÔÚ΢ÐÅС³ÌÐòƽ̨ÉÏÊÇÎÞ·¨ÔËÐеġ£

¾­¹ý¶Ô SocketIO ͨÐŽøÐÐ×¥°üÒÔ¼°Ñо¿Æä¿Í»§¶ËÔ´Â룬±ÊÕß·â×°ÁËÒ»¸ö´óÔ¼ 100 ÐÐÊÊÓÃÓÚ΢ÐÅС³ÌÐòƽ̨µÄ WxSocketIOÀ࣬¿ÉÒÔ°ïÖú¿ª·¢Õß¿ìËÙʹÓà SocketIO À´½øÐÐ WebSocket ͨÐÅ¡£

const socket = new WxSocketIO();
socket.on('hi', packet => console.log('server say hi: ' + packet.message));
socket.emit('hello', { from: 'techird' });

Èç¹ûÏëҪʹÓÃ΢ÐÅÔ­ÉúµÄ API£¬ÄÇôÔÚ·þÎñÆ÷¶ËÒ²¿ÉÒÔÖ±½ÓʹÓà ws À´ÊµÏÖ W3C ±ê×¼µÄ½Ó¿Ú¡£²»¹ý SocketIO Ö§³Ö¶à½ø³ÌµÄÌØÐÔ£¬¶ÔÓÚºóÐø×öºáÏòÀ©ÕÅÊǺÜÓаïÖúµÄ¡£ÌÚѶÔÆÔÚºóÃæÒ²»áÓмƻ®ÍƳöÖ§³Ö´ó¹æÄ£ÒµÎñÐèÇóµÄ WebSocket Á¬½Ó·þÎñ£¬¼õСҵÎñµÄ²¿Êð³É±¾¡£

ͨÐÅЭÒéÉè¼Æ

ʵÏÖÒ»¸ö¶à¿Í»§¶Ë½»»¥µÄ·þÎñ£¬ÊÇÐèÒª°ÑÖмäÉæ¼°µ½ËùÓеÄÏûÏ¢ÀàÐͶ¼Éè¼ÆÇå³þµÄ£¬¾ÍÏñÊÇÀàËƼôµ¶Ê¯Í·²¼ÕâÑùÒ»¸öС³ÌÐò£¬¶¼ÓÐÏÂÃæÕâЩÏûÏ¢ÀàÐÍ¡£

¾ßÌåÿ¸öÏûÏ¢µÄ²ÎÊý¿ÉÒԲο¼Ô´ÂëÀïµÄserver/protocol.brief.md

·þÎñÆ÷Âß¼­

·þÎñÆ÷µÄÂß¼­ºÜ¼òµ¥£º

ÊÕµ½Óû§ÇëÇó¼ÓÈë·¿¼ä£¨join£©£¬¾ÍÑ°ÕÒ»¹Ã»ÂúµÄ·¿¼ä

ÕÒµ½·¿¼ä£¬Ôò¼ÓÈë

ûÕÒµ½·¿¼ä£¬´´½¨Ð·¿¼ä

ÓÐÓû§¼ÓÈëµÄ·¿¼ä¼ì²éÊÇ·ñÒÑÂú£¬Èç¹ûÒÑÂú£¬Ôò£º

¸ø·¿¼äÀïÿ¸öÓû§·¢ËÍ¿ªÊ¼ÓÎÏ·µÄÐźţ¨start£©

Æô¶¯¼ÆʱÆ÷£¬¼ÆʱÆ÷½áÊøºó½øÐÐÓÎÏ·½áËã

ÓÎÏ·½áËã

Á½Á½Ö®¼ä PK£¬Ó®·½·ÖÊý¼ÓÒ»£¬Êä·½¼õÒ»£¬×îÖÕµÃÿ¸öÍæ¼Ò»ù±¾µÃ·Ö x

¶ÔÓÚÿ¸öÍæ¼Ò£¬Èç¹û·ÖÊý x ´óÓÚ 0£¬ÔòÊÓΪʤÀû£¬Á¬Ê¤´ÎÊý¼ÓÒ»£¬·ñÔòÁ¬Ê¤´ÎÊý¹éÁã

±¾¾ÖµÃ·ÖΪ·ÖÊý x ³ËÒÔÁ¬Ê¤´ÎÊý

·¢Ëͱ¾¾ÖÓÎÏ·½á¹û¸ø·¿¼äÀïµÄÿλÍæ¼Ò

΢ÐŶËʵÏÖ

΢ÐÅС³ÌÐòÖ±½ÓʹÓÃÉÏÃæµÄЭÒ飬Õë¶Ô²»Í¬µÄ³¡¾°½øÐÐäÖȾ¡£ÕûÌåµÄ״̬»úÈçÏ¡£

״̬»úÕûÀíÇå³þºó£¬¾ÍÊǸù¾Ý״̬»úÀ´¿ØÖÆʲôʱºò·¢ËÍÏûÏ¢£¬½Óµ½ÏûÏ¢ºóÈçºÎ´¦ÀíµÄÎÊÌâÁË¡£¾ßÌåʵÏÖÇë²ÎÕÕ app/pages/game/game.jsÀïµÄÔ´Âë¡£

 

   
6601 ´Îä¯ÀÀ       20
Ïà¹ØÎÄÕÂ

Éî¶È½âÎö£ºÇåÀíÀôúÂë
ÈçºÎ±àд³öÓµ±§±ä»¯µÄ´úÂë
Öع¹-ʹ´úÂë¸ü¼ò½àÓÅÃÀ
ÍŶÓÏîÄ¿¿ª·¢"±àÂë¹æ·¶"ϵÁÐÎÄÕÂ
Ïà¹ØÎĵµ

Öع¹-¸ÄÉƼÈÓдúÂëµÄÉè¼Æ
Èí¼þÖع¹v2
´úÂëÕû½àÖ®µÀ
¸ßÖÊÁ¿±à³Ì¹æ·¶
Ïà¹Ø¿Î³Ì

»ùÓÚHTML5¿Í»§¶Ë¡¢Web¶ËµÄÓ¦Óÿª·¢
HTML 5+CSS ¿ª·¢
ǶÈëʽC¸ßÖÊÁ¿±à³Ì
C++¸ß¼¶±à³Ì