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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 

     
   
 ¶©ÔÄ
  ¾èÖú
HTML5 WebSockets »ù´¡Ê¹Óý̳Ì

 
À´Ô´£º¼«¿ÍÍ·Ìõ ·¢²¼ÓÚ£º 2017-10-25
  2978  次浏览      32
 

ʲôÊÇWebSockets£¿ ¡¡¡¡

WebSocketsÊÇÔÚÒ»¸ö(TCP)½Ó¿Ú½øÐÐË«ÏòͨÐŵļ¼Êõ£¬PUSH¼¼ÊõÀàÐÍ¡£Í¬Ê±WebSocketsÈÔ½«»ùÓÚW3C±ê×¼£¬Ä¿Ç°ÎªÖ¹£¬ChromeºÍSafariµÄ×îа汾ä¯ÀÀÆ÷ÒѾ­Ö§³ÖWebSocketsÁË¡£

WebSockets½«»áÌæ´úʲô£¿ ¡¡¡¡

WebSockets¿ÉÒÔÌæ´úLong Polling(PHP·þÎñ¶ËÍÆËͼ¼Êõ)£¬ÕâÊÇÒ»¸öÓÐȤµÄ¸ÅÄî¡£¿Í»§¶Ë·¢ËÍÒ»¸öÇëÇóµ½·þÎñÆ÷£¬ÏÖÔÚ£¬·þÎñÆ÷¶Ë²¢²»»áÏìÓ¦»¹Ã»×¼±¸ºÃµÄÊý¾Ý£¬Ëü»á±£³ÖÁ¬½ÓµÄ´ò¿ª×´Ì¬Ö±µ½×îеÄÊý¾Ý×¼±¸¾ÍÐ÷·¢ËÍ£¬Ö®ºó¿Í»§¶ËÊÕµ½Êý¾Ý£¬È»ºó·¢ËÍÁíÒ»¸öÇëÇó¡£ÕâÓÐËüµÄºÃ´¦£º¼õÉÙÈÎÒ»Á¬½ÓµÄÑÓ³Ù£¬µ±Ò»¸öÁ¬½ÓÒѾ­´ò¿ªÊ±¾Í²»ÐèÒª´´½¨ÁíÒ»¸öеÄÁ¬½Ó¡£µ«ÊÇLong-Polling²¢²»ÊÇʲô»¨Çμ¼Êõ£¬ËûÈÔÓпÉÄÜ·¢ÉúÇëÇóÔÝÍ££¬Òò´Ë»áÐèÒª½¨Á¢ÐµÄÁ¬½Ó¡£ ¡¡¡¡

һЩAJAXÓ¦ÓÃʹÓÃÉÏÊö¼¼Êõ-Õâ¾­³£ÊǹéÒòÓÚµÍ×ÊÔ´ÀûÓᣠ¡¡¡¡

ÊÔÏëһϣ¬Èç¹û·þÎñÆ÷ÔÚÔ糿»á×ÔÆô¶¯²¢·¢ËÍÊý¾Ýµ½ÄÇЩϣÍû½ÓÊÕ¶ø²»ÓÃÌáǰ½¨Á¢Ò»Ð©Á¬½Ó¶Ë¿ÚµÄ¿Í»§¶Ë£¬ÕâÊÇÒ»¼þ¶à°ôµÄÊÂÇé°¡£¡»¶Ó­À´µ½PUSH¼¼ÊõµÄÊÀ½ç£¡

µÚÒ»²½£º¸ã¶¨WebSocket·þÎñÆ÷¡¡ ¡¡

ÕâÆª½Ì³Ì»á°Ñ¸ü¶àµÄ¾«Á¦·ÅÔÚ¿Í»§¶ËµÄ´´½¨¶ø²»ÊÇ·þÎñÆ÷¶ËµÄÖ´ÐеȲÙ×÷¡£ ¡¡¡¡

ÎÒʹÓûùÓÚwindows 7µÄXAMPPÀ´ÊµÏÖ±¾µØÔËÐÐPHP¡£phpwebsocketsÊÇPHP WebSocket·þÎñÆ÷¡£(ÒÔÎҵľ­ÑéÕâ¸ö°æ±¾´æÔÚһЩСÎÊÌ⣬ÎÒÒѶÔËü×öÁËЩÐ޸IJ¢ÉÏ´«Ô´Îļþ¹²Ïí¸ø´ó¼Ò)ÏÂÃæµÄÕâЩ²»Í¬°æ±¾Ò²¿ÉÒÔʵÏÖWebSocket£¬Èç¹ûij¸ö²»ÄÜÓã¬Äã¿ÉÒÔÊÔÊÔÆäËü°æ±¾»òÕß¼ÌÐø¿´ÏÂÃæµÄ½Ì³Ì¡£ ¡¡

Æô¶¯Apache·þÎñÆ÷

µÚ¶þ²½£ºÐÞ¸ÄURLsºÍ¶Ë¿Ú

¸ù¾ÝÄã֮ǰµÄ°²×°Ð޸ķþÎñÆ÷£¬ÏÂÃæÊÇsetup.class.phpÖеÄÀý×Ó£º

1 public function _construct($host='localhost',$port=8000,$max=100)
2 {
3 $this->createSocket($host,$port);
4 }

¡¡

ä¯ÀÀÎļþ²¢ÔÚÊʵ±Çé¿öϽøÐиü¸Ä¡£

µÚÈý²½£º¿ªÊ¼´´½¨¿Í»§¶Ë

ÏÂÃæÀ´´´½¨»ù±¾Ä£°å£¬ÕâÊÇÎÒµÄclient.phpÎļþ£º

1 <!DOCTYPE html>
2 <html>
3 <head>
4 <script src="http://ajax.googleapis.com/ajax/libs/jquery/

1.4.2/jquery.min.js"></script>
5
6 <title>WebSockets Client</title>
7
8 </head>
9 <body>
10 <div id="wrapper">
11
12 <div id="container">
13
14 <h1>WebSockets Client</h1>
15
16 <div id="chatLog">
17
18 </div><!-- #chatLog -->
19 <p id="examples">e.g. try 'hi', 'name', 'age', 'today'</p>
20
21 <input id="text" type="text" />
22 <button id="disconnect">Disconnect</button>
23
24 </div><!-- #container -->
25
26 </div>
27 </body>
28 </html>?

¡¡

ÎÒÃÇÒѾ­´´½¨Àï»ù±¾Ä£°å£ºÒ»¸öchat logÈÝÆ÷£¬Ò»¸öinputÊäÈë¿òºÍÒ»¸ö¶Ï¿ªÁ¬½ÓµÄ°´Å¥¡£

µÚËIJ½£ºÌí¼ÓһЩCSS ¡¡¡¡

ûʲô»¨ÇδúÂ룬ֻÊÇ´¦ÀíһϱêÇ©µÄÑùʽ¡£

1 body {
2 font-family:Arial, Helvetica, sans-serif;
3 }
4 #container{
5 border:5px solid grey;
6 width:800px;
7 margin:0 auto;
8 padding:10px;
9 }
10 #chatLog{
11 padding:5px;
12 border:1px solid black;
13 }
14 #chatLog p {
15 margin:0;
16 }
17 .event {
18 color:#999;
19 }
20 .warning{
21 font-weight:bold;
22 color:#CCC;
23 }

µÚÎå²½£ºWebSocketʼþ ¡¡¡¡

Ê×ÏÈÈÃÎÒÃdz¢ÊÔ²¢Àí½âWebSocketʼþµÄ¸ÅÄ

WebSocketʼþ£º

ÎÒÃǽ«Ê¹ÓÃÈý¸öWebSocketʼþ£º

1.onopen: µ±½Ó¿Ú´ò¿ªÊ±

2.onmessage: µ±ÊÕµ½ÐÅϢʱ

3.onclose: µ±½Ó¿Ú¹Ø±Õʱ

ÎÒÃÇÈçºÎÀ´ÊµÏÖÄØ£¿ ¡¡

Ê×ÏÈ´´½¨WebSocket¶ÔÏó

1 var socket = new WebSocket("ws://localhost:8000/socket

/server/startDaemon.php");

È»ºóÏòÏÂÃæÕâÑù¼ì²âʼþ

1 socket.onmessage = function(msg){
2 alert(msg); //Awesome!
3 }

µ«ÎÒÃÇ»¹ÊǾ¡Á¿±ÜÃâʹÓÃalert£¬ÏÖÔÚÎÒÃÇ¿ÉÒÔ°ÑÎÒÃÇѧµÄ¶«Î÷ÕûºÏµ½¿Í»§¶ËÒ³ÃæÖÐÁË¡£

µÚÁù²½£ºJavaScript ¡¡¡¡

Ê×ÏÈÎÒÃǽ«´úÂë·Åµ½jQueryµÄ document.readyº¯ÊýÖУ¬È»ºóÎÒÃÇ»¹Òª¼ì²éÓû§µÄä¯ÀÀÆ÷ÊÇ·ñÖ§³ÖWebSocket¡£Èç¹û²»Ö§³Ö£¬ÎÒÃǾÍÌí¼ÓÒ»¸öÁ´ÏòChromeä¯ÀÀÆ÷Ò³ÃæµÄÁ´½Ó¡£

1 $(document).ready(function() {
2 if(!("WebSocket" in window)){
3 $('#chatLog, input, button, #examples').

fadeOut("fast");
4 $('<p>Oh no, you need a browser that supports WebSockets. How about <a href="http://www.google.com/chrome">Google Chrome</a>?</p>').appendTo('#container');
5 }else{
6
7 //The user has WebSockets
8
9 connect();
10
11 function connect(){
12 //the connect function code is below
13
14 }
15 });

ÈçÄãËù¼û£¬Èç¹ûÓû§ä¯ÀÀÆ÷Ö§³ÖWebSocket£¬ÎÒÃǽ«Ö´ÐÐconnect()º¯Êý¡£ÕâÀïÊǺËÐŦÄÜ£¬ÎÒÃǽ«¿ªÊ¼´´½¨open¡¢closeºÍreceiveʼþ¡£ ¡¡¡¡

ÎÒÃǽ«ÔÚÎÒÃǵķþÎñÆ÷¶¨ÒåURL¡£

Äã¿ÉÄܻᷢÏÖURLÖÐÔõôûÓÐhttp£¿¶÷£¬Êǵģ¬ÕâÊÇÒ»¸öWebSocket URL£¬Ê¹ÓÃÁ˲»Í¬µÄЭÒé¡£ÏÂÃæÊÇURL·Ö½âͼʾ£º

ÏÂÃæÈÃÎÒÃǼÌÐøÍê³Éconnect()º¯Êý£¬ÎÒÃǽ«´úÂë·ÅÈëtry/catch¿é£¬ÕâÑùÈç¹û´úÂë³öÏÖÎÊÌ⣬ÎÒÃÇÄÜÈÃÓû§ÖªµÀ¡£ÎÒÃÇ´´½¨WebSocket£¬²¢½«ÐÅÏ¢´«µÝµ½message()º¯Êý£¬Ö®ºó»á×ö½²½â¡£ÎÒÃÇ´´½¨ÎÒÃǵÄonopen¡¢onmessageºÍoncloseº¯Êý.ÐèҪעÒâµÄÊÇÎÒÃÇΪÓû§ÌṩÁ˶˿Ú״̬£¬Õâ²¢²»ÊDZØÐèµÄ£¬µ«ÎÒÃǰÑËü·Å½øÀ´Ö÷ÒªÊÇΪÁË·½±ãµ÷ÊÔ¡£

1 function connect(){
2 try{
3
4 var socket;
5 var host = "ws://localhost:8000/socket/server/startDaemon.php";
6 var socket = new WebSocket(host);
7
8 message('<p class="event">Socket Status: '+socket.readyState);
9
10 socket.onopen = function(){
11 message('<p class="event">Socket Status: '+socket.readyState+' (open)');
12 }
13
14 socket.onmessage = function(msg){
15 message('<p class="message">Received: '+msg.data);
16 }
17
18 socket.onclose = function(){
19 message('<p class="event">Socket Status: '+socket.readyState+' (Closed)');
20 }
21
22 } catch(exception){
23 message('<p>Error'+exception);
24 }
25 }

message()º¯ÊýºÜ¼òµ¥,Ëü½«ÎÒÃÇÏëÕ¹ÏÖ¸øÓû§µÄÎı¾ÌîÈëchat logÈÝÆ÷ÄÚ¡£ÎÒÃÇÔÚsocketʼþº¯ÊýÖÐΪ¶ÎÂä()±êÇ©´´½¨Êʵ±µÄclass£¬ÎÒÃÇÔÚmessageº¯ÊýÖÐÖ»ÓÐÒ»¸ö¶ÎÂä½áÊø±êÇ©¡£

1 function message(msg){
2 $('#chatLog').append(msg+'</p>');
3 }

ĿǰµÄ³É¹û

Èç¹ûÄãÒѰ´ÉÏÃæ½Ì³Ì°´²¿¾Í°àµÄ×öµÄ»°£¬ºÜºÃ£¬ÎÒÃÇÒѾ­´´½¨ÁË HTML/CSS Ä£°å¡¢´´½¨²¢½¨Á¢WebsocketÁ¬½Ó¡¢Í¨¹ý´´½¨Á¬½Ó±£³ÖÓû§µÄ½øÕ¹¸üС£

µÚÆß²½£º·¢ËÍÊý¾Ý ¡¡¡¡

ÏÖÔÚÎÒÃÇÒѾ­ÓÐÁËÌá½»°´Å¥£¬µ«ÎÒÃÇ»¹ÐèÒª¼àÌýÓû§°´Ï¼üÅ̵Äʼþ£¬²¢ÔËÐÐsendº¯Êý£¬ÏÂÃæµÄ¡¯13¡ä±ãÊǻسµ¼ü¶ÔÓ¦µÄASCIIÂë¡£

1 $('#text').keypress(function(event) {
2 if (event.keyCode == '13') {
3 send();
4 }
5 });

¡¡

ÏÂÃæÊÇsend()º¯Êý£º

function send(){
2
3 var text = $('#text').val();
4 if(text==""){
5 message('<p class="warning">Please enter a message');
6 return ;
7 }
8 try{
9 socket.send(text);
10 message('<p class="event">Sent: '+text)
11 } catch(exception){
12 message('<p class="warning"> Error:' + exception);
13 }
14
15 $('#text').val("");
16
17 }

ÏÂÃæÎÒÃÇÐèÒª£º¡¡

ÄÇЩ¶îÍâµÄ´úÂë×öÁËÒÔϹ¤×÷£º¼ì²âÓû§ÊÇ·ñʲô¶¼Ã»ÊäÈëÈ´ÈÔµã»÷·µ»Ø¡¢Çå¿ÕinputÊäÈë¿ò¡¢Ö´ÐÐmessage()º¯Êý¡£

¹Ø±ÕSocket

¹Ø±ÕSocket²Ù×÷Ï൱¼òµ¥£¬Ìí¼Ó¶Ô¶Ï¿ªÁ¬½Ó°´Å¥µÄclickʼþ¼àÌý¾Í¿ÉÒÔ¡£

ÍêÕûJavaScript´úÂë

$(document).ready(function() {
2
3 if(!("WebSocket" in window)){
4 $('#chatLog, input, button, #examples').

fadeOut("fast");
5 $('<p>Oh no, you need a browser that supports WebSockets. How about <a href="http://www.google.com/chrome">Google Chrome</a>?</p>').appendTo('#container');
6 }else{
7 //The user has WebSockets
8
9 connect();
10
11 function connect(){
12 var socket;
13 var host = "ws://localhost:8000/socket/server/start

Daemon.php";
14
15 try{
16 var socket = new WebSocket(host);
17
18 message('<p class="event">Socket Status: '+socket.readyState);
19
20 socket.onopen = function(){
21 message('<p class="event">Socket Status: '+socket.readyState+' (open)');
22 }
23
24 socket.onmessage = function(msg){
25 message('<p class="message">Received: '+msg.data);
26 }
27
28 socket.onclose = function(){
29 message('<p class="event">Socket Status: '+socket.readyState+' (Closed)');
30 }
31
32 } catch(exception){
33 message('<p>Error'+exception);
34 }
35
36 function send(){
37 var text = $('#text').val();
38
39 if(text==""){
40 message('<p class="warning">Please enter

a message');
41 return ;
42 }
43 try{
44 socket.send(text);
45 message('<p class="event">Sent: '+text)
46
47 } catch(exception){
48 message('<p class="warning">');
49 }
50 $('#text').val("");
51 }
52
53 function message(msg){
54 $('#chatLog').append(msg+'</p>');
55 }
56
57 $('#text').keypress(function(event) {
58 if (event.keyCode == '13') {
59 send();
60 }
61 });
62
63 $('#disconnect').click(function(){
64 socket.close();
65 });
66
67 }//End connect
68
69 }//End else
70
71 });

µÚ¾Å²½£ºÔËÐÐWebSocket·þÎñÆ÷ ¡¡¡¡

ÎÒÃÇÒªÊäÈëһЩÃüÁîÐУ¬XAMPPÌṩÁ˱ȽϷ½±ãµÄshellÑ¡Ïî¡£µã»÷XAMPP¿ØÖÆÃæ°åµÄ¡¯shell¡¯°´Å¥²¢ÊäÈ룺php -q path\to\server.phpÏÖÔÚÄãÒѾ­ÔËÐÐÁËWebSocket·þÎñÆ÷£¡

´ó¹¦¸æ³É£¡ ¡¡¡¡

µ±Ò³Ãæ¶ÁÈ¡ºó£¬½«³¢ÊÔ´´½¨Ò»¸öWebSocketÁ¬½Ó£¬È»ºóÓû§¿ÉÒÔÊäÈëÐÅÏ¢²¢´Ó·þÎñÆ÷½ÓÊÕÐÅÏ¢¡£

 

   
2978 ´Îä¯ÀÀ       32
Ïà¹ØÎÄÕÂ

»ùÓÚEAµÄÊý¾Ý¿â½¨Ä£
Êý¾ÝÁ÷½¨Ä££¨EAÖ¸ÄÏ£©
¡°Êý¾Ýºþ¡±£º¸ÅÄî¡¢ÌØÕ÷¡¢¼Ü¹¹Óë°¸Àý
ÔÚÏßÉ̳ÇÊý¾Ý¿âϵͳÉè¼Æ ˼·+Ч¹û
 
Ïà¹ØÎĵµ

GreenplumÊý¾Ý¿â»ù´¡Åàѵ
MySQL5.1ÐÔÄÜÓÅ»¯·½°¸
ijµçÉÌÊý¾ÝÖÐ̨¼Ü¹¹Êµ¼ù
MySQL¸ßÀ©Õ¹¼Ü¹¹Éè¼Æ
Ïà¹Ø¿Î³Ì

Êý¾ÝÖÎÀí¡¢Êý¾Ý¼Ü¹¹¼°Êý¾Ý±ê×¼
MongoDBʵս¿Î³Ì
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
PostgreSQLÊý¾Ý¿âʵսÅàѵ