<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>檬檬前端行 &#187; html5</title>
	<atom:link href="http://www.frontendcodes.com/?feed=rss2&#038;tag=html5" rel="self" type="application/rss+xml" />
	<link>http://www.frontendcodes.com</link>
	<description>路漫漫其修远兮</description>
	<lastBuildDate>Wed, 18 Mar 2015 10:05:27 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
		<item>
		<title>零基础开始WebSocket(3)—-简单的聊天室程序</title>
		<link>http://www.frontendcodes.com/?p=142</link>
		<comments>http://www.frontendcodes.com/?p=142#comments</comments>
		<pubDate>Thu, 14 Apr 2011 07:28:57 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[前端]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[WebSocket]]></category>

		<guid isPermaLink="false">http://www.frontendcodes.com/?p=142</guid>
		<description><![CDATA[客户端： &#60;!DOCTYPE html&#62; &#60;html&#62; &#60;head&#62; &#60;title&#62;&#60;/title&#62; &#60;style&#62; #win{ border:1px solid #ccc; padding:20px ; color:#333; line-height:2em; } .input{ padding:10px 0px; text-align:left;} .input input{ width:200px;} &#60;/style&#62; &#60;/head&#62; &#60;body&#62; &#60;div id=&#8221;win&#8221;&#62;&#60;/div&#62; &#60;div&#62;&#60;input id=&#8221;text&#8221;&#62;&#60;button id=&#8221;send&#8221;&#62;发送&#60;/button&#62;&#60;button id=&#8221;disconnect&#8221;&#62;断开连接&#60;/button&#62;&#60;/div&#62; &#60;script&#62; function log(d){ var logDiv=document.createElement(&#8220;div&#8221;); logDiv.innerHTML=d; document.getElementById(&#8220;win&#8221;).appendChild(logDiv); } //创建websocket连接 var socket=new WebSocket(&#8220;ws://localhost:12345/websocket/server.php&#8221;); //绑定连接成功事件 socket.onopen=function(){ log(&#8220;Socket ReadyState:&#8221;+socket.readyState); //socket.send(&#8220;hi&#8221;); }; //绑定接收到信息事件 socket.onmessage=function(e){ log(e.data); } //绑定关闭连接事件 [...]]]></description>
			<content:encoded><![CDATA[<p>客户端：</p>
<div id="_mcePaste">&lt;!DOCTYPE html&gt;</div>
<div id="_mcePaste">&lt;html&gt;</div>
<div id="_mcePaste">&lt;head&gt;</div>
<div id="_mcePaste">&lt;title&gt;&lt;/title&gt;</div>
<div id="_mcePaste">&lt;style&gt;</div>
<div id="_mcePaste">#win{ border:1px solid #ccc; padding:20px ; color:#333; line-height:2em; }</div>
<div id="_mcePaste">.input{ padding:10px 0px; text-align:left;}</div>
<div id="_mcePaste">.input input{ width:200px;}</div>
<div id="_mcePaste">&lt;/style&gt;</div>
<div id="_mcePaste">&lt;/head&gt;</div>
<div id="_mcePaste">&lt;body&gt;</div>
<div id="_mcePaste">&lt;div id=&#8221;win&#8221;&gt;&lt;/div&gt;</div>
<div id="_mcePaste">&lt;div&gt;&lt;input id=&#8221;text&#8221;&gt;&lt;button id=&#8221;send&#8221;&gt;发送&lt;/button&gt;&lt;button id=&#8221;disconnect&#8221;&gt;断开连接&lt;/button&gt;&lt;/div&gt;</div>
<div id="_mcePaste">&lt;script&gt;</div>
<div id="_mcePaste">function log(d){</div>
<div id="_mcePaste">var logDiv=document.createElement(&#8220;div&#8221;);</div>
<div id="_mcePaste">logDiv.innerHTML=d;</div>
<div id="_mcePaste">document.getElementById(&#8220;win&#8221;).appendChild(logDiv);</div>
<div id="_mcePaste">}</div>
<div>//创建websocket连接</div>
<div id="_mcePaste">var socket=new WebSocket(&#8220;ws://localhost:12345/websocket/server.php&#8221;);</div>
<div>//绑定连接成功事件</div>
<div id="_mcePaste">socket.onopen=function(){</div>
<div id="_mcePaste">log(&#8220;Socket ReadyState:&#8221;+socket.readyState);</div>
<div id="_mcePaste">//socket.send(&#8220;hi&#8221;);</div>
<div id="_mcePaste">};</div>
<div>//绑定接收到信息事件</div>
<div id="_mcePaste">socket.onmessage=function(e){</div>
<div id="_mcePaste">log(e.data);</div>
<div id="_mcePaste">}</div>
<div>//绑定关闭连接事件</div>
<div id="_mcePaste">socket.onclose=function(){</div>
<div id="_mcePaste">log(&#8220;close!&#8221;);</div>
<div id="_mcePaste">log(&#8220;Socket ReadyState:&#8221;+socket.readyState);</div>
<div id="_mcePaste">}</div>
<div>//发送信息至服务器</div>
<div id="_mcePaste">function send(){</div>
<div id="_mcePaste">var texts=document.getElementById(&#8220;text&#8221;).value;</div>
<div id="_mcePaste">socket.send(texts);</div>
<div id="_mcePaste">document.getElementById(&#8220;text&#8221;).value=&#8221;";</div>
<div id="_mcePaste">}</div>
<div>//绑定其他DOM事件</div>
<div id="_mcePaste">document.getElementById(&#8220;send&#8221;).onclick=send;</div>
<div id="_mcePaste">document.getElementById(&#8220;text&#8221;).onkeyup=function(e){</div>
<div id="_mcePaste">if(e.keyCode==13) send();</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">document.getElementById(&#8220;disconnect&#8221;).onclick=function(){</div>
<div id="_mcePaste">socket.close();</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">&lt;/script&gt;</div>
<div id="_mcePaste">&lt;/body&gt;</div>
<div id="_mcePaste">&lt;/html&gt;</div>
<p>服务器端server.php</p>
<p>&lt;?php</p>
<p>/*  &gt;php -q server.php  */</p>
<p>error_reporting(E_ALL);</p>
<p>set_time_limit(0);</p>
<p>ob_implicit_flush();</p>
<p>$master  = WebSocket(&#8220;localhost&#8221;,12345);</p>
<p>$sockets = array($master);</p>
<p>$users   = array();</p>
<p>$debug   = true;</p>
<p>while(true){</p>
<p>$changed = $sockets;</p>
<p>socket_select($changed,$write=NULL,$except=NULL,NULL);</p>
<p>foreach($changed as $socket){</p>
<p>if($socket==$master){</p>
<p>$client=socket_accept($master);</p>
<p>if($client&lt;0){ console(&#8220;socket_accept() failed&#8221;); continue; }</p>
<p>else{ connect($client); }</p>
<p>}</p>
<p>else{</p>
<p>$bytes = @socket_recv($socket,$buffer,2048,0);</p>
<p>if($bytes==0){ disconnect($socket); }</p>
<p>else{</p>
<p>$user = getuserbysocket($socket);</p>
<p>if(!$user-&gt;handshake){ dohandshake($user,$buffer); }</p>
<p>else{ process($user,$buffer); }</p>
<p>}</p>
<p>}</p>
<p>}</p>
<p>}</p>
<p>//&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>function process($user,$msg){</p>
<p>global $sockets,$users;</p>
<p>$action = unwrap($msg);</p>
<p>say(&#8220;&lt; &#8220;.$action);</p>
<p>if(!$user-&gt;init){</p>
<p><span style="white-space: pre;"> </span>$user-&gt;user=$action;</p>
<p><span style="white-space: pre;"> </span>send($user-&gt;socket,&#8221;hello &#8220;.$user-&gt;user);</p>
<p><span style="white-space: pre;"> </span>send($user-&gt;socket,&#8221;You can Chat Now!&#8221;);</p>
<p><span style="white-space: pre;"> </span>$user-&gt;init=true;</p>
<p><span style="white-space: pre;"> </span>return;</p>
<p>}</p>
<p>foreach($users as $otherUser){</p>
<p><span style="white-space: pre;"> </span>send($otherUser-&gt;socket,$user-&gt;user.&#8221;:&#8221;.$action);</p>
<p>}</p>
<p>/*</p>
<p>switch($action){</p>
<p>case &#8220;hello&#8221; : send($user-&gt;socket,&#8221;hello human&#8221;);                       break;</p>
<p>case &#8220;hi&#8221;    : send($user-&gt;socket,&#8221;zup human&#8221;);                         break;</p>
<p>case &#8220;name&#8221;  : send($user-&gt;socket,&#8221;my name is Multivac, silly I know&#8221;); break;</p>
<p>case &#8220;age&#8221;   : send($user-&gt;socket,&#8221;I am older than time itself&#8221;);       break;</p>
<p>case &#8220;date&#8221;  : send($user-&gt;socket,&#8221;today is &#8220;.date(&#8220;Y.m.d&#8221;));           break;</p>
<p>case &#8220;time&#8221;  : send($user-&gt;socket,&#8221;server time is &#8220;.date(&#8220;H:i:s&#8221;));     break;</p>
<p>case &#8220;thanks&#8221;: send($user-&gt;socket,&#8221;you&#8217;re welcome&#8221;);                    break;</p>
<p>case &#8220;bye&#8221;   : send($user-&gt;socket,&#8221;bye&#8221;);                               break;</p>
<p>default      : send($user-&gt;socket,$action.&#8221; not understood&#8221;);           break;</p>
<p>}</p>
<p>*/</p>
<p>}</p>
<p>function send($client,$msg){</p>
<p>say(&#8220;&gt; &#8220;.$msg);</p>
<p>$msg = wrap($msg);</p>
<p>socket_write($client,$msg,strlen($msg));</p>
<p>}</p>
<p>function WebSocket($address,$port){</p>
<p>$master=socket_create(AF_INET, SOCK_STREAM, SOL_TCP)     or die(&#8220;socket_create() failed&#8221;);</p>
<p>socket_set_option($master, SOL_SOCKET, SO_REUSEADDR, 1)  or die(&#8220;socket_option() failed&#8221;);</p>
<p>socket_bind($master, $address, $port)                    or die(&#8220;socket_bind() failed&#8221;);</p>
<p>socket_listen($master,20)                                or die(&#8220;socket_listen() failed&#8221;);</p>
<p>echo &#8220;Server Started : &#8220;.date(&#8216;Y-m-d H:i:s&#8217;).&#8221;\n&#8221;;</p>
<p>echo &#8220;Master socket  : &#8220;.$master.&#8221;\n&#8221;;</p>
<p>echo &#8220;Listening on   : &#8220;.$address.&#8221; port &#8220;.$port.&#8221;\n\n&#8221;;</p>
<p>return $master;</p>
<p>}</p>
<p>function connect($socket){</p>
<p>global $sockets,$users;</p>
<p>$user = new User();</p>
<p>$user-&gt;id = uniqid();</p>
<p>$user-&gt;socket = $socket;</p>
<p>array_push($users,$user);</p>
<p>array_push($sockets,$socket);</p>
<p>console($socket.&#8221; CONNECTED!&#8221;);</p>
<p>}</p>
<p>function disconnect($socket){</p>
<p>global $sockets,$users;</p>
<p>$found=null;</p>
<p>$n=count($users);</p>
<p>for($i=0;$i&lt;$n;$i++){</p>
<p>if($users[$i]-&gt;socket==$socket){ $found=$i; break; }</p>
<p>}</p>
<p>if(!is_null($found)){ array_splice($users,$found,1); }</p>
<p>$index = array_search($socket,$sockets);</p>
<p>//socket_close($socket);</p>
<p>console($socket.&#8221; DISCONNECTED!&#8221;);</p>
<p>if($index&gt;=0){ array_splice($sockets,$index,1); }</p>
<p>}</p>
<p>function dohandshake($user,$buffer){</p>
<p>console(&#8220;\nRequesting handshake&#8230;&#8221;);</p>
<p>console($buffer);</p>
<p>list($resource,$host,$origin,$strkey1,$strkey2,$data) = getheaders($buffer);</p>
<p>console(&#8220;Handshaking&#8230;&#8221;);</p>
<p>$pattern = &#8216;/[^\d]*/&#8217;;</p>
<p>$replacement = &#8221;;</p>
<p>$numkey1 = preg_replace($pattern, $replacement, $strkey1);</p>
<p>$numkey2 = preg_replace($pattern, $replacement, $strkey2);</p>
<p>$pattern = &#8216;/[^ ]*/&#8217;;</p>
<p>$replacement = &#8221;;</p>
<p>$spaces1 = strlen(preg_replace($pattern, $replacement, $strkey1));</p>
<p>$spaces2 = strlen(preg_replace($pattern, $replacement, $strkey2));</p>
<p>/*</p>
<p>if ($spaces1 == 0 || $spaces2 == 0 || $numkey1 % $spaces1 != 0 || $numkey2 % $spaces2 != 0) {</p>
<p>//socket_close($user-&gt;socket);</p>
<p>console(&#8216;failed&#8217;);</p>
<p>return false;</p>
<p>}</p>
<p>*/</p>
<p>$ctx = hash_init(&#8216;md5&#8242;);</p>
<p>hash_update($ctx, pack(&#8220;N&#8221;, $numkey1/$spaces1));</p>
<p>hash_update($ctx, pack(&#8220;N&#8221;, $numkey2/$spaces2));</p>
<p>hash_update($ctx, $data);</p>
<p>$hash_data = hash_final($ctx,true);</p>
<p>$upgrade  = &#8220;HTTP/1.1 101 WebSocket Protocol Handshake\r\n&#8221; .</p>
<p>&#8220;Upgrade: WebSocket\r\n&#8221; .</p>
<p>&#8220;Connection: Upgrade\r\n&#8221; .</p>
<p>&#8220;Sec-WebSocket-Origin: &#8221; . $origin . &#8220;\r\n&#8221; .</p>
<p>&#8220;Sec-WebSocket-Location: ws://&#8221; . $host . $resource . &#8220;\r\n&#8221; .</p>
<p>&#8220;\r\n&#8221; .</p>
<p>$hash_data;</p>
<p>socket_write($user-&gt;socket,$upgrade.chr(0),strlen($upgrade.chr(0)));</p>
<p>$user-&gt;handshake=true;</p>
<p>console($upgrade);</p>
<p>console(&#8220;Done handshaking&#8230;&#8221;);</p>
<p>sendHello($user);</p>
<p>return true;</p>
<p>}</p>
<p>function sendHello($user){</p>
<p><span style="white-space: pre;"> </span>send($user-&gt;socket,&#8221;hello!&#8221;);</p>
<p><span style="white-space: pre;"> </span>send($user-&gt;socket,&#8221;Welcome to ChatRoom&#8221;);</p>
<p><span style="white-space: pre;"> </span>send($user-&gt;socket,&#8221;Please Enter Your NickName!&#8221;);</p>
<p><span style="white-space: pre;"> </span>$user-&gt;init=false;</p>
<p>}</p>
<p>function getheaders($req){</p>
<p>$r=$h=$o=null;</p>
<p>if(preg_match(&#8220;/GET (.*) HTTP/&#8221;   ,$req,$match)){ $r=$match[1]; }</p>
<p>if(preg_match(&#8220;/Host: (.*)\r\n/&#8221;  ,$req,$match)){ $h=$match[1]; }</p>
<p>if(preg_match(&#8220;/Origin: (.*)\r\n/&#8221;,$req,$match)){ $o=$match[1]; }</p>
<p>if(preg_match(&#8220;/Sec-WebSocket-Key2: (.*)\r\n/&#8221;,$req,$match)){ $key2=$match[1]; }</p>
<p>if(preg_match(&#8220;/Sec-WebSocket-Key1: (.*)\r\n/&#8221;,$req,$match)){ $key1=$match[1]; }</p>
<p>if(preg_match(&#8220;/\r\n(.*?)\$/&#8221;,$req,$match)){ $data=$match[1]; }</p>
<p>return array($r,$h,$o,$key1,$key2,$data);</p>
<p>}</p>
<p>function getuserbysocket($socket){</p>
<p>global $users;</p>
<p>$found=null;</p>
<p>foreach($users as $user){</p>
<p>if($user-&gt;socket==$socket){ $found=$user; break; }</p>
<p>}</p>
<p>return $found;</p>
<p>}</p>
<p>function     say($msg=&#8221;"){ echo $msg.&#8221;\n&#8221;; }</p>
<p>function    wrap($msg=&#8221;"){ return chr(0).$msg.chr(255); }</p>
<p>function  unwrap($msg=&#8221;"){ return substr($msg,1,strlen($msg)-2); }</p>
<p>function console($msg=&#8221;"){ global $debug; if($debug){ echo $msg.&#8221;\n&#8221;; } }</p>
<p>class User{</p>
<p>var $id;</p>
<p>var $socket;</p>
<p>var $handshake;</p>
<p>var $user;</p>
<p>var $init;</p>
<p>}</p>
<p>?&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.frontendcodes.com/?feed=rss2&#038;p=142</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>零基础开始WebSocket(2)—-测试服务器</title>
		<link>http://www.frontendcodes.com/?p=138</link>
		<comments>http://www.frontendcodes.com/?p=138#comments</comments>
		<pubDate>Wed, 13 Apr 2011 08:48:10 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[前端]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[WebSocket]]></category>

		<guid isPermaLink="false">http://www.frontendcodes.com/?p=138</guid>
		<description><![CDATA[支持HTML5的websocket的浏览器很多。 包括 Opera,Firefox4,Chrome,Safari. 其中Firefox4和Opera的WebSocket默认没有开启，需要手动配置。在浏览器地址栏中输入about:config ，然后找到websocket这一项，把它启用。 我使用了Chrome来测试。 首先，新建一个HTML，加入几个div，来显示数据。 &#60;!DOCTYPE html&#62; &#60;html&#62; &#60;head&#62; &#60;title&#62;&#60;/title&#62; &#60;style&#62; #win{ border:1px solid #ccc; padding:20px ; color:#333; line-height:2em; } .input{ padding:10px 0px; text-align:left;} .input input{ width:200px;} &#60;/style&#62; &#60;/head&#62; &#60;body&#62; &#60;div id=&#8221;win&#8221;&#62;&#60;/div&#62; &#60;div&#62;&#60;input id=&#8221;text&#8221;&#62;&#60;button id=&#8221;send&#8221;&#62;发送&#60;/button&#62;&#60;button id=&#8221;disconnect&#8221;&#62;断开连接&#60;/button&#62;&#60;/div&#62; &#60;/body&#62; &#60;/html&#62; &#60;!DOCTYPE html&#62;是HTML5的DTD，不谈了。 两个DIV，win用来显示数据，input用来存放提示框 下面写入脚本来测试socket服务器 首先是一个输出的函数 log &#60;script&#62; function log(d){ var logDiv=document.createElement(&#8220;div&#8221;); logDiv.innerHTML=d; document.getElementById(&#8220;win&#8221;).appendChild(logDiv); } &#60;/script&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>支持HTML5的websocket的浏览器很多。</p>
<p>包括 Opera,Firefox4,Chrome,Safari.</p>
<p>其中Firefox4和Opera的WebSocket默认没有开启，需要手动配置。在浏览器地址栏中输入about:config ，然后找到websocket这一项，把它启用。</p>
<p>我使用了Chrome来测试。</p>
<p>首先，新建一个HTML，加入几个div，来显示数据。</p>
<div id="_mcePaste">&lt;!DOCTYPE html&gt;</div>
<div id="_mcePaste">&lt;html&gt;</div>
<div id="_mcePaste">&lt;head&gt;</div>
<div id="_mcePaste">&lt;title&gt;&lt;/title&gt;</div>
<div id="_mcePaste">&lt;style&gt;</div>
<div id="_mcePaste">#win{ border:1px solid #ccc; padding:20px ; color:#333; line-height:2em; }</div>
<div id="_mcePaste">.input{ padding:10px 0px; text-align:left;}</div>
<div id="_mcePaste">.input input{ width:200px;}</div>
<div id="_mcePaste">&lt;/style&gt;</div>
<div id="_mcePaste">&lt;/head&gt;</div>
<div id="_mcePaste">&lt;body&gt;</div>
<div id="_mcePaste">&lt;div id=&#8221;win&#8221;&gt;&lt;/div&gt;</div>
<div id="_mcePaste">&lt;div&gt;&lt;input id=&#8221;text&#8221;&gt;&lt;button id=&#8221;send&#8221;&gt;发送&lt;/button&gt;&lt;button id=&#8221;disconnect&#8221;&gt;断开连接&lt;/button&gt;&lt;/div&gt;</div>
<div>
<div>&lt;/body&gt;</div>
<div>&lt;/html&gt;</div>
</div>
<div>&lt;!DOCTYPE html&gt;是HTML5的DTD，不谈了。</div>
<div>两个DIV，win用来显示数据，input用来存放提示框</div>
<div>下面写入脚本来测试socket服务器</div>
<div>首先是一个输出的函数 log</div>
<div>&lt;script&gt;</div>
<div>
<div>function log(d){</div>
<div>var logDiv=document.createElement(&#8220;div&#8221;);</div>
<div>logDiv.innerHTML=d;</div>
<div>document.getElementById(&#8220;win&#8221;).appendChild(logDiv);</div>
<div>}</div>
</div>
<div>&lt;/script&gt;</div>
<div>然后新建一个websocket连接</div>
<div>&lt;script&gt;</div>
<div>
<div>var socket=new WebSocket(&#8220;ws://localhost:12345/websocket/server.php&#8221;);</div>
<div>socket.onopen=function(){</div>
<div>log(&#8220;已经连接到socket服务器&#8221;);</div>
<div>log(&#8220;Socket ReadyState:&#8221;+socket.readyState);</div>
<div>};</div>
<div>&lt;/script&gt;</div>
<div>ws://localhost:12345/websocket/server.php是我的socket服务器端文件地址，注意这里的协议不是http而是ws。</div>
<div>于是新建了一个websocket对象socket，给socket绑定了一个事件，连接open时，给出提示。</div>
</div>
<div>好了，测试一下服务器吧。</div>
]]></content:encoded>
			<wfw:commentRss>http://www.frontendcodes.com/?feed=rss2&#038;p=138</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>零基础开始WebSocket(1)&#8212;-简单的socket服务器端</title>
		<link>http://www.frontendcodes.com/?p=128</link>
		<comments>http://www.frontendcodes.com/?p=128#comments</comments>
		<pubDate>Wed, 13 Apr 2011 03:39:45 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[前端]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[WebSocket]]></category>

		<guid isPermaLink="false">http://www.frontendcodes.com/?p=128</guid>
		<description><![CDATA[零基础。开始搞websocket websocket实现了即时通信，远比现在常用的长连接经济方便。 我用的socket服务器端是PHP的。 下载链接 http://www.frontendcodes.com/downloads/socket.rar 解压至本地服务器文件夹。 在server.php中 有$master  = WebSocket(&#8220;localhost&#8221;,12345);这一行，localhost是地址，12345是端口号，可以自行修改。 修改完在命令行中键入php -q 路径/server.php，例如，我的在E:\svn\sockets\ 执行命令 E:\php\php.exe -q E:\svn\sockets\server.php OK,一个简单的socket服务器搞定。]]></description>
			<content:encoded><![CDATA[<p>零基础。开始搞websocket</p>
<p>websocket实现了即时通信，远比现在常用的长连接经济方便。</p>
<p>我用的socket服务器端是PHP的。 下载链接 http://www.frontendcodes.com/downloads/socket.rar</p>
<p>解压至本地服务器文件夹。</p>
<p>在server.php中 有$master  = WebSocket(&#8220;localhost&#8221;,12345);这一行，localhost是地址，12345是端口号，可以自行修改。</p>
<p>修改完在命令行中键入php -q 路径/server.php，例如，我的在E:\svn\sockets\</p>
<p>执行命令 E:\php\php.exe -q E:\svn\sockets\server.php</p>
<p>OK,一个简单的socket服务器搞定。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.frontendcodes.com/?feed=rss2&#038;p=128</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
