{"id":32295,"date":"2024-11-25T13:03:39","date_gmt":"2024-11-25T05:03:39","guid":{"rendered":"https:\/\/fwq.ai\/blog\/32295\/"},"modified":"2024-11-25T13:03:39","modified_gmt":"2024-11-25T05:03:39","slug":"node-js%e6%9d%a5%e5%ae%9e%e7%8e%b0%e5%be%ae%e4%bf%a1%e5%b0%8f%e7%a8%8b%e5%ba%8f%e5%ae%9e%e6%97%b6%e8%81%8a%e5%a4%a9%e5%8a%9f%e8%83%bd%ef%bc%88%e9%99%84%e4%bb%a3%e7%a0%81%ef%bc%89","status":"publish","type":"post","link":"https:\/\/fwq.ai\/blog\/32295\/","title":{"rendered":"node.js\u6765\u5b9e\u73b0\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u5b9e\u65f6\u804a\u5929\u529f\u80fd\uff08\u9644\u4ee3\u7801\uff09"},"content":{"rendered":"<p>\u672c\u7bc7\u6587\u7ae0\u7ed9\u5927\u5bb6\u5e26\u6765\u7684\u5185\u5bb9\u662f\u5173\u4e8e\u5982\u4f55\u4f7f\u7528node.js\u6765\u5b9e\u73b0\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u5b9e\u65f6\u804a\u5929\u529f\u80fd\uff08\u9644\u4ee3\u7801\uff09\uff0c\u6709\u4e00\u5b9a\u7684\u53c2\u8003\u4ef7\u503c\uff0c\u6709\u9700\u8981\u7684\u670b\u53cb\u53ef\u4ee5\u53c2\u8003\u4e00\u4e0b\uff0c\u5e0c\u671b\u5bf9\u4f60\u6709\u6240\u5e2e\u52a9\u3002<\/p>\n<p>\u6211\u5bf9im\u8fd9\u5757\u53ef\u8c13\u662f\u771f\u6b63\u7684\u5c0f\u767d\uff0c\u6240\u4ee5\u6ca1\u63a5\u89e6\u8fc7\u7684\u53ef\u4ee5\u6765\u53c2\u8003\u53c2\u8003\u3002<br \/>\u5728\u5fae\u4fe1\u8fd9\u4e2a\u804a\u5929\u5de5\u5177\u91cc\u7684\u5c0f\u7a0b\u5e8f\u4e0a\u5b9e\u73b0\u804a\u5929\u529f\u80fd\uff0c\u603b\u611f\u89c9\u602a\u602a\u7684\u3002\u4f46\u9886\u5bfc\u8981\u6c42\u4e86\uff0c\u603b\u662f\u8981\u5e72\u7684\u3002<\/p>\n<p>\u7136\u540e\u5c31\u5b9e\u65f6\u901a\u8baf\u8fd9\u4e2a\u5173\u952e\u8bcd\u5c55\u5f00\u641c\u7d22\uff0c\u7a7f\u68ad\u4e8e\u7f51\u9875\u4e4b\u95f4\u3002\u4e0d\u8fc7\u7c98\u8d34\u590d\u5236\u7684\u771f\u7684\u592a\u591a\u4e86\uff0c\u627e\u4e86\u534a\u5929\u4e5f\u6ca1\u627e\u5230\u60f3\u8981\u7684\uff0c\u4e0d\u8fc7\u8fd8\u662f\u63d0\u53d6\u5230\u4e86\u5173\u952e\u8bcdWebSocket\u548cnode.js\uff0c\u7136\u540e\u641c\u7d22\u8fd9\u4e24\u662f\u5565\uff0c\u4ec0\u4e48\u5173\u7cfb\uff0c\u603b\u7b97\u660e\u767d\u4e86\u4e00\u70b9\u3002<\/p>\n<p>\u6700\u540e\u786e\u5b9a\u4e86\u7b2c\u4e00\u6b65\u9700\u8981\u5e72\u7684\u662f\u7528\u7684node.js\u642d\u5efa\u670d\u52a1\uff08<strong>\u6211\u662f\u88c5\u5728\u81ea\u5df1\u7684\u7a97\u53e3\u4e0b\u7684<\/strong>\uff09\uff1a<\/p>\n<p>1.\u9996\u5148\u5230\u5b98\u7f51\u4e0b\u8f7dnode.js\uff0c\u8fde\u63a5\uff1ahttps\uff1a<br \/>&nbsp; &nbsp;\/\/nodejs.org\/en\/\u5b89\u88c5\u5f88\u7b80\u5355\uff0c\u53cc\u51fb\u4e0b\u8f7d\u597d\u7684\u6587\u4ef6\uff0c\u76f4\u63a5\u4e0b\u4e00\u6b65\u4e00\u6b65\uff0c\u6ca1\u4ec0\u4e48\u7279\u6b8a\u7684\u9009\u62e9\uff0c\u8def\u5f84\u9ed8\u8ba4\u5c31\u597d<br \/>&nbsp; &nbsp;\u53ef\u4ee5\u6253\u5f00\u547d\u4ee4\u884c\u7a97\u53e3\u8f93\u5165\u8282\u70b9-v\u4f1a\u8f93\u51fa\u7248\u672c\uff0c\u6765\u68c0\u9a8c\u662f\u5426\u5b89\u88c5\u6210\u529f\uff0c\u5176\u5b9e\u8fd9\u4e2a\u4e5f\u6ca1\u4ec0\u4e48\u5fc5\u8981<br \/><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/img-blog.csdn.net\/20180810103836124?watermark\/2\/text\/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zODM2NDEwOQ==\/font\/5a6L5L2T\/fontsize\/400\/fill\/I0JBQkFCMA==\/dissolve\/70\" title=\"node.js\u6765\u5b9e\u73b0\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u5b9e\u65f6\u804a\u5929\u529f\u80fd\uff08\u9644\u4ee3\u7801\uff09\u63d2\u56fe\" alt=\"node.js\u6765\u5b9e\u73b0\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u5b9e\u65f6\u804a\u5929\u529f\u80fd\uff08\u9644\u4ee3\u7801\uff09\u63d2\u56fe\" \/><\/p>\n<p>2.\u7136\u540e\u65b0\u5efa\u4e00\u4e2a\u6587\u4ef6\u5939\uff08\u6211\u7684node.js\u662f\u5b89\u88c5\u5728?\u76d8\u7684\uff0c\u7136\u540e\u518dd\u76d8\u4e0b\u65b0\u5efa\u4e86\u4e2a\u53eb\u7f51\u9875\u5957\u63a5\u5b57\u7684\u6587\u4ef6\u5939\uff09<br \/>&nbsp; &nbsp;\u7136\u540e\u7528\u547d\u4ee4\u8f6c\u5230\u8be5\u76ee\u5f55\u4e0b\uff1a&nbsp; &nbsp;\u5728\u8fd9\u4e2a\u6587\u4ef6\u4e0b\u5b89\u88c5\u6211\u4eec\u8981\u4f7f\u7528\u7684\u6a21\u5757\uff1a&nbsp; &nbsp;\u5b89\u88c5\u6a21\u5757\u524d\u9700\u8981\u5148\u751f\u6210\u4e00\u4e2a\u914d\u7f6e\u6587\u4ef6\uff0c\u4e0d\u7136\u4f1a\u62a5\u9519\uff08\u53cd\u6b63\u6211\u62a5\u4e86\uff09<\/p>\n<p>&nbsp; &nbsp;\u751f\u6210\u914d\u7f6e\u6587\u4ef6\u547d\u4ee4\uff1anpm init -f<br \/>&nbsp; &nbsp;\u6267\u884c\u540e\u53ef\u4ee5\u770b\u5230\u5728\u8be5\u6587\u4ef6\u4e0b\u591a\u4e86\u4e00\u4e2a\u53ebpackage.json\u7684\u914d\u7f6e\u6587\u4ef6\uff0c\u5148\u4e0d\u7528\u7ba1\uff08\u540e\u9762\u4e5f\u6ca1\u7ba1\u8fc7\uff09\uff0c\u63a5\u4e0b\u6765\u7ee7\u7eed\u5b89\u88c5\u6a21\u5757\u7684\u64cd\u4f5c<br \/>&nbsp; &nbsp;\u521a\u5f00\u59cb\u6211\u662f\u5b89\u88c5\u7684socket.io\uff0c\u540e\u6765\u53d1\u73b0\u5c0f\u7a0b\u5e8f\u6839\u672c\u7528\u4e0d\u4e86\uff0c\u6240\u4ee5\u8fd9\u91cc\u4e5f\u4e0d\u8bf4socket.io\u4e86\u3002\u6211\u4eec\u8fd9\u91cc\u7528ws<br \/>&nbsp; &nbsp;\u5b89\u88c5ws\u547d\u4ee4\uff1anpm install &#8211;save ws\uff08\u5378\u8f7d\u6a21\u5757\u547d\u4ee4\uff1anpm uninstall\u6a21\u5757\u540d\u5b57\uff09<\/p>\n<p>3.\u5b89\u88c5\u597d\u6a21\u5757\u540e\uff0c\u5728\u4f60\u76ee\u5f55\u4e0b\u521b\u5efa\u4e00\u4e2a\u7684.js\u6587\u4ef6\uff0c\u6211\u8fd9\u662f\u4e00\u4e2aws.js \u6211\u8fd9\u91cc\u80af\u5b9a\u4f1a\u6bd4\u4f60\u4eec\u7684\u6587\u4ef6\u8981\u591a\uff0c\u4e0d\u7528\u8fd9\u4e2a\u5728\u610f\u7136\u540e\u6253\u5f00\u8fd9\u4e2a\u7684.js\u6587\u4ef6\uff0c\u5f00\u59cb\u7f16\u8f91\u4f60\u7684\u670d\u52a1\u7aef\u4ee3\u7801\uff0c\u8fd9\u4e2a\u968f\u4fbf\u4f60\u7528\u8bb0\u4e8b\u672c\u8fd8\u662f\u5176\u4ed6\u4ec0\u4e48\u8f6f\u4ef6\u8fd9\u662f\u6700\u7b80\u5355\u57fa\u7840\u7684\u4e00\u4e2a\u6253\u5f00\u8fde\u63a5\uff0c\u54cd\u5e94\u7684\u4ee3\u7801\uff1a<\/p>\n<pre>\/\/\u5f15\u5165ws\u6a21\u5757\nconst&nbsp;WebSocket&nbsp;=&nbsp;require('ws');\n\/\/\u521b\u5efa\u670d\u52a1&nbsp;port\u662f\u7aef\u53e3\nconst&nbsp;wss&nbsp;=&nbsp;new&nbsp;WebSocket.Server({&nbsp;port:&nbsp;80});\n\/\/\u5ba2\u6237\u7aef\u8fde\u63a5\u65f6\u4f1a\u8fdb\u8fd9\u4e2a\nwss.on('connection',&nbsp;function&nbsp;connection(ws)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;console.log('\u8fde\u63a5\u6210\u529f');\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u5ba2\u6237\u7aef\u53d1\u9001\u6d88\u606f\u65f6\u4f1a\u89e6\u53d1\u8fd9\u4e2a\n&nbsp;&nbsp;&nbsp;&nbsp;ws.on('message',&nbsp;function&nbsp;incoming(data)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('\u6536\u5230\u6d88\u606f');\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/data\u662f\u5ba2\u6237\u7aef\u53d1\u9001\u7684\u6d88\u606f\uff0c\u8fd9\u91ccclients.foreach\u662f\u5e7f\u64ad\u7ed9\u6240\u6709\u5ba2\u6237\u7aef\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wss.clients.forEach(function&nbsp;each(client)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u628a\u5ba2\u6237\u7aef\u53d1\u6765\u7684data\uff0c\u5faa\u73af\u53d1\u7ed9\u6bcf\u4e2a\u5ba2\u6237\u7aef\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;client.send(data);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});\n&nbsp;&nbsp;&nbsp;&nbsp;});\n});<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u8fd9\u91cc\u8d34\u4e0a\u7a0d\u5fae\u6bd4\u8f83\u5b8c\u5584\u7684\u4ee3\u7801\uff0c\u8fd9\u91cc\u662f\u7528\u6570\u636e\u5e93\u4fdd\u5b58\u7684\u53d1\u9001\u7684\u6d88\u606f\uff0c\u7528\u7684mysql\uff0c\u6240\u4ee5\u9700\u8981\u5728\u5b89\u88c5mysql\u6a21\u5757<br \/>npm install &#8211;save mysql<br \/>\u4ee3\u7801\uff1a<br \/>\u8fd9\u91cc\u6709\u5f88\u591a\u6ce8\u91ca\u7684\u4ee3\u7801\uff0c\u90fd\u662f\u6211\u7814\u7a76\u65f6\u7528\u5230\u7684\uff0c\u65e0\u89c6\u53ef\u4ee5\u5220\u6389\u6216<br \/>\u8fd9\u4e2aMySQL\u7684\u7684\u6570\u636e\u8fde\u63a5\u9700\u8981\u6839\u636e\u81ea\u5df1\u7684\u4fee\u6539\uff0c\u4e5f\u662f\u8868<br \/>\u6211\u8fd9\u7528\u5230\u7684\u8868\u5c31\u4e24\u4e2a\u5b57\u6bb5ID\uff0c\u5473\u7cbe<\/p>\n<pre>var&nbsp;http=require('http');\nvar&nbsp;qs&nbsp;=&nbsp;require('querystring');&nbsp;\/\/\nvar&nbsp;ws=require('ws');\n\nvar&nbsp;server=http.createServer(function&nbsp;(req,&nbsp;res)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;res.end(\"This&nbsp;is&nbsp;a&nbsp;WebSockets&nbsp;server!\");\n});\nvar&nbsp;url&nbsp;=&nbsp;require('url');\n\/\/\u9a8c\u8bc1\u51fd\u6570\nfunction&nbsp;ClientVerify(info)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;ret&nbsp;=&nbsp;false;\/\/\u62d2\u7edd\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/url\u53c2\u6570\n&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;params&nbsp;=&nbsp;url.parse(info.req.url,&nbsp;true).query;\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/console.log(groupid);\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/groupid=params['groupid']\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u8c01\u8c01\u8c01\u6765\u5230\u4e86\u8ba8\u8bba\u7ec4\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/&nbsp;wss.clients.forEach(function&nbsp;each(client)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;client.send('233');\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/&nbsp;});\n&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true;\n\n}\nvar&nbsp;wss&nbsp;=&nbsp;new&nbsp;ws.Server(&nbsp;{&nbsp;server:&nbsp;server,verifyClient:&nbsp;ClientVerify&nbsp;}&nbsp;);\n\n\/*\/\/\u5f15\u5165\u6570\u636e\u5e93\n&nbsp;var&nbsp;mysql&nbsp;=&nbsp;require('mysql');\n&nbsp;\/\/\u8fde\u63a5\u6570\u636e\u5e93\u4fe1\u606f&nbsp;\u666e\u901a\u7248\n&nbsp;var&nbsp;connection&nbsp;=&nbsp;mysql.createConnection({\n&nbsp;&nbsp;&nbsp;&nbsp;host&nbsp;&nbsp;:&nbsp;'58.87.94.16',\n&nbsp;&nbsp;&nbsp;&nbsp;user&nbsp;&nbsp;:&nbsp;'root',\n&nbsp;&nbsp;&nbsp;&nbsp;password&nbsp;:&nbsp;'root',\n&nbsp;&nbsp;&nbsp;&nbsp;database&nbsp;:&nbsp;'bootdo'\n});*\/\n\/\/\u5f15\u5165\u6570\u636e\u5e93\nvar&nbsp;mysql&nbsp;=&nbsp;require('mysql');\n\/\/&nbsp;\u521b\u5efa\u6570\u636e\u6c60\nconst&nbsp;pool&nbsp;&nbsp;=&nbsp;mysql.createPool({\n&nbsp;&nbsp;&nbsp;&nbsp;host&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;'58.87.94.16',&nbsp;&nbsp;&nbsp;\/\/&nbsp;\u6570\u636e\u5e93\u5730\u5740\n&nbsp;&nbsp;&nbsp;&nbsp;user&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;'root',&nbsp;&nbsp;&nbsp;&nbsp;\/\/&nbsp;\u6570\u636e\u5e93\u7528\u6237\n&nbsp;&nbsp;&nbsp;&nbsp;password&nbsp;:&nbsp;'root',&nbsp;&nbsp;&nbsp;\/\/&nbsp;\u6570\u636e\u5e93\u5bc6\u7801\n&nbsp;&nbsp;&nbsp;&nbsp;database&nbsp;:&nbsp;'bootdo'&nbsp;&nbsp;\/\/&nbsp;\u9009\u4e2d\u6570\u636e\u5e93\n})\n\/*\u63a5\u6536\u4e00\u4e2asql\u8bed\u53e5&nbsp;\u4ee5\u53ca\u6240\u9700\u7684values\n\u8fd9\u91cc\u63a5\u6536\u7b2c\u4e8c\u53c2\u6570values\u7684\u539f\u56e0\u662f\u53ef\u4ee5\u4f7f\u7528mysql\u7684\u5360\u4f4d\u7b26&nbsp;'?'\n\u6bd4\u5982&nbsp;query(`select&nbsp;*&nbsp;from&nbsp;my_database&nbsp;where&nbsp;id&nbsp;=&nbsp;?`,&nbsp;[1])\n\u597d\u50cf\u53ef\u4ee5\u76f4\u63a5\u4f7f\u7528pool.query\uff0c\u6682\u65f6\u4e0d\u660e*\/\nlet&nbsp;query&nbsp;=&nbsp;function(sql,values,callback){\n&nbsp;&nbsp;&nbsp;&nbsp;pool.getConnection(function(err,conn){\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(err){\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;callback(err,null,null);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.query(sql,values,function(err,results,fields){\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u91ca\u653e\u8fde\u63a5\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.release();\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u4e8b\u4ef6\u9a71\u52a8\u56de\u8c03\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;callback(err,results,fields);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;});\n};\nmodule.exports=query;\n\nwss.on('connection',&nbsp;function&nbsp;connection(ws)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;console.log('\u94fe\u63a5\u6210\u529f\uff01');\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/console.log(ws);\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u67e5\u8be2\u5386\u53f2\u804a\u5929\u8bb0\u5f55&nbsp;\u5e7f\u64ad\u7ed9\u8fde\u63a5\u7684\u5ba2\u6237\u7aef\n&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;sql='select&nbsp;*&nbsp;from&nbsp;hi_test&nbsp;where&nbsp;groupid=1';\n&nbsp;&nbsp;&nbsp;&nbsp;console.log('sql\u8bed\u53e5',sql);\n&nbsp;&nbsp;&nbsp;&nbsp;query(sql,function&nbsp;(err,res,fields)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('sql\u64cd\u4f5c\u8fd4\u56de\uff1a',&nbsp;res);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(res!=null){\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ws.send(JSON.stringify(res));\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;});\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u76d1\u542c\u5ba2\u6237\u7aef\u53d1\u9001\u5f97\u6d88\u606f\n&nbsp;&nbsp;&nbsp;&nbsp;ws.on('message',&nbsp;function&nbsp;incoming(data)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('\u6765\u81ea\u5ba2\u6237\u7aef\u5f97message:',data);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u4fdd\u5b58\u5ba2\u6237\u7aef\u53d1\u9001\u5f97\u6d88\u606f\u5230\u6570\u636e\u5e93\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sql=\"insert&nbsp;into&nbsp;hi_test(msg)&nbsp;values(?)\";\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('sql\u8bed\u53e5',sql);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;query(sql,data,function&nbsp;(err,res,fields)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('sql\u64cd\u4f5c\u8fd4\u56de\uff1a',res);\/\/res.insertId\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;sendData=JSON.stringify([{msg:data}])\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/**\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u628a\u6d88\u606f\u53d1\u9001\u5230\u6240\u6709\u7684\u5ba2\u6237\u7aef\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;wss.clients\u83b7\u53d6\u6240\u6709\u94fe\u63a5\u7684\u5ba2\u6237\u7aef\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wss.clients.forEach(function&nbsp;each(client)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;client.send(sendData);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});\n&nbsp;&nbsp;&nbsp;&nbsp;});\n});\n\nserver.listen(80,&nbsp;function&nbsp;listening()&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;console.log('\u670d\u52a1\u5668\u542f\u52a8\u6210\u529f\uff01');\n});\n\n\n\n\/*\u53d1\u8d77get\u8bf7\u6c42\nvar&nbsp;options&nbsp;=&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;hostname:&nbsp;'www.tjjxsoft.cn',\n&nbsp;&nbsp;&nbsp;&nbsp;path:&nbsp;'\/attendanceParameter\/getAttendanceParameter\/13',\n&nbsp;&nbsp;&nbsp;&nbsp;method:&nbsp;'GET'\n};\n\nvar&nbsp;req&nbsp;=&nbsp;http.request(options,&nbsp;function&nbsp;(res)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;console.log('\u72b6\u6001:&nbsp;'&nbsp;+&nbsp;res.statusCode);\n&nbsp;&nbsp;&nbsp;&nbsp;res.on('data',&nbsp;function&nbsp;(chunk)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('\u8fd4\u56de\u6570\u636e:&nbsp;'&nbsp;+&nbsp;chunk);\n&nbsp;&nbsp;&nbsp;&nbsp;});\n});\n\nreq.on('error',&nbsp;function&nbsp;(e)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;console.log('problem&nbsp;with&nbsp;request:&nbsp;'&nbsp;+&nbsp;e.message);\n});\n\nreq.end();*\/\n\n\/*\n\/!*\u6784\u5efahttp\u670d\u52a1*!\/\nvar&nbsp;app&nbsp;=&nbsp;require('http').createServer()\n\/!*\u5f15\u5165socket.io*!\/\nvar&nbsp;io&nbsp;=&nbsp;require('socket.io')(app);\n\/!*\u5b9a\u4e49\u76d1\u542c\u7aef\u53e3\uff0c\u53ef\u4ee5\u81ea\u5b9a\u4e49\uff0c\u7aef\u53e3\u4e0d\u8981\u88ab\u5360\u7528*!\/\nvar&nbsp;PORT&nbsp;=&nbsp;80;\n\/!*\u76d1\u542c\u7aef\u53e3*!\/\napp.listen(PORT);\n\n\/!*\u5b9a\u4e49\u7528\u6237\u6570\u7ec4*!\/\nvar&nbsp;users&nbsp;=&nbsp;[];\n\/!**\n&nbsp;*\u76d1\u542c\u5ba2\u6237\u7aef\u8fde\u63a5\n&nbsp;*io\u662f\u6211\u4eec\u5b9a\u4e49\u7684\u670d\u52a1\u7aef\u7684socket\n&nbsp;*\u56de\u8c03\u51fd\u6570\u91cc\u9762\u7684socket\u662f\u672c\u6b21\u8fde\u63a5\u7684\u5ba2\u6237\u7aefsocket\n&nbsp;*io\u4e0esocket\u662f\u4e00\u5bf9\u591a\u7684\u5173\u7cfb\n&nbsp;*!\/\nio.on('connection',&nbsp;function&nbsp;(socket)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;\/!*\u6240\u6709\u7684\u76d1\u542con\uff0c\u4e0e\u53d1\u9001emit\u90fd\u5f97\u5199\u5728\u8fde\u63a5\u91cc\u9762\uff0c\u5305\u62ec\u65ad\u5f00\u8fde\u63a5*!\/\n&nbsp;&nbsp;&nbsp;&nbsp;socket.on('login',function(data){\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('\u6709\u4eba\u767b\u5f55\u4e86\uff1a')\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(data);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;users.push({\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;username:data.username\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/!*\u5411\u6240\u6709\u8fde\u63a5\u7684\u5ba2\u6237\u7aef\u5e7f\u64adadd\u4e8b\u4ef6*!\/\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;io.sockets.emit('add',data)\n&nbsp;&nbsp;&nbsp;&nbsp;})\n})\nconsole.log('app&nbsp;listen&nbsp;at'+PORT);*\/<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u7136\u540e\u547d\u4ee4\u884c\u8f93\u5165\u8282\u70b9ws.js\uff08\u4f60\u81ea\u5df1\u7684\u6587\u4ef6\u540d\uff09\u56de\u8f66\uff0c\u5c31\u5df2\u7ecf\u542f\u52a8\u4e86\u670d\u52a1<br \/><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/img-blog.csdn.net\/20180810112435117?watermark\/2\/text\/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zODM2NDEwOQ==\/font\/5a6L5L2T\/fontsize\/400\/fill\/I0JBQkFCMA==\/dissolve\/70\" title=\"node.js\u6765\u5b9e\u73b0\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u5b9e\u65f6\u804a\u5929\u529f\u80fd\uff08\u9644\u4ee3\u7801\uff09\u63d2\u56fe1\" alt=\"node.js\u6765\u5b9e\u73b0\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u5b9e\u65f6\u804a\u5929\u529f\u80fd\uff08\u9644\u4ee3\u7801\uff09\u63d2\u56fe1\" \/><\/p>\n<p>4.\u73b0\u5728\u670d\u52a1\u5c31\u5df2\u7ecf\u8d77\u6765\u4e86\uff0c\u5f04\u63a5\u4e0b\u6765\u5c0f\u7a0b\u5e8f\u8fd9\u8fb9\u7684<br \/>\u76f4\u63a5\u8d34\u4ee3\u7801\uff1a<\/p>\n<p>wxml\uff1a<\/p>\n<pre>&lt;view&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;scroll-view&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;view&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;block&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--  --&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;view&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;view&gt;{{item.user.name}}&lt;\/view&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;view&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;view&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!-- \u6211\u8fd9\u7528\u7684\u662f\u81ea\u5df1\u53e6\u4e00\u4e2a\u670d\u52a1\u7684\u56fe\u7247 --&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;image&gt;&lt;\/image&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/view&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;view&gt;{{item.msg}}&lt;\/view&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/view&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/view&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;view&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;view&gt;{{item.user.name}}&lt;\/view&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;view&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;view&gt;{{item.msg}}&lt;\/view&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;view&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!-- \u6211\u8fd9\u7528\u7684\u662f\u81ea\u5df1\u53e6\u4e00\u4e2a\u670d\u52a1\u7684\u56fe\u7247 --&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;image&gt;&lt;\/image&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/view&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/view&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/view&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/block&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/view&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/scroll-view&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;view&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;button&gt;\u53d1\u9001&lt;\/button&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/view&gt;&lt;\/view&gt;<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>.js\u6587\u4ef6\uff1a<\/p>\n<pre>var&nbsp;app&nbsp;=&nbsp;getApp();\nPage({\n&nbsp;&nbsp;&nbsp;&nbsp;data:&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;socket_open:&nbsp;false,\/\/\u5224\u65ad\u8fde\u63a5\u662f\u5426\u6253\u5f00\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sendText:&nbsp;\"\",\/\/\u53d1\u9001\u7684\u6d88\u606f\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;serverMsg:&nbsp;[],\/\/\u63a5\u53d7\u7684\u670d\u52a1\u7aef\u7684\u6d88\u606f\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;userInfo:&nbsp;{&nbsp;userId:&nbsp;1,&nbsp;name:&nbsp;\"\u5475\u5475\",img:'\u5934\u50cf'},\/\/app.appData.userInfo,\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scrolltop:&nbsp;999\n&nbsp;&nbsp;&nbsp;&nbsp;},\n\n&nbsp;&nbsp;&nbsp;&nbsp;\/**\u8f93\u5165\u5185\u5bb9&nbsp;*\/\n&nbsp;&nbsp;&nbsp;&nbsp;sendTextBind:&nbsp;function(e)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.setData({\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sendText:&nbsp;e.detail.value\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(this.data.sendText);\n&nbsp;&nbsp;&nbsp;&nbsp;},\n&nbsp;&nbsp;&nbsp;&nbsp;\/**\u53d1\u9001\u6d88\u606f&nbsp;*\/\n&nbsp;&nbsp;&nbsp;&nbsp;sendBtn:&nbsp;function(e)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('\u53d1\u9001\u6d88\u606f\u4e8b\u4ef6\uff01');\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;msgJson&nbsp;=&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user:&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id:&nbsp;this.data.userInfo.userId,\/\/app.appData.userInfo.userId,&nbsp;\/\/\u552f\u4e00ID\u533a\u5206\u8eab\u4efd\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name:&nbsp;this.data.userInfo.name,&nbsp;\/\/\u663e\u793a\u7528\u59d3\u540d\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;img:&nbsp;this.data.userInfo.img,&nbsp;\/\/\u663e\u793a\u7528\u5934\u50cf\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg:&nbsp;this.data.sendText,\/\/\u53d1\u9001\u7684\u6d88\u606f\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;groupid:1\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u53d1\u9001\u6d88\u606f\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.send_socket_message(JSON.stringify(msgJson));\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.setData({\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sendText:&nbsp;\"\"\/\/\u53d1\u9001\u6d88\u606f\u540e\uff0c\u6e05\u7a7a\u6587\u672c\u6846\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});\n&nbsp;&nbsp;&nbsp;&nbsp;},\n&nbsp;&nbsp;&nbsp;&nbsp;onLoad:&nbsp;function(options)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/&nbsp;app.login();\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/&nbsp;this.setData({\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;userInfo:&nbsp;app.appData.userInfo\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/&nbsp;});\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u521d\u59cb\u5316\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.wssInit();\n&nbsp;&nbsp;&nbsp;&nbsp;},\n&nbsp;&nbsp;&nbsp;&nbsp;wssInit()&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;that&nbsp;=&nbsp;this;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u5efa\u7acb\u8fde\u63a5\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wx.connectSocket({\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url:&nbsp;'ws:\/\/localhost'\/\/app.appData.socket\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;})\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u76d1\u542cWebSocket\u8fde\u63a5\u6253\u5f00\u4e8b\u4ef6\u3002\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wx.onSocketOpen(function(res)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('WebSocket\u8fde\u63a5\u5df2\u6253\u5f00\uff01');\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;that.setData({\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;socket_open:&nbsp;true\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u76d1\u542cWebSocket\u63a5\u53d7\u5230\u670d\u52a1\u5668\u7684\u6d88\u606f\u4e8b\u4ef6\u3002\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wx.onSocketMessage(function(res)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('\u6536\u5230\u670d\u52a1\u5668\u5185\u5bb9\uff1a',&nbsp;res);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;server_msg&nbsp;=&nbsp;JSON.parse(res.data);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(server_msg);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(server_msg&nbsp;!=&nbsp;null)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;msgnew&nbsp;=&nbsp;[];\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(var&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;p&gt;wxss\uff1a&lt;\/p&gt;&lt;pre class=\"brush:css;toolbar:false;\"&gt;.homeView&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;border-top:&nbsp;1px&nbsp;solid&nbsp;#ededed;\n}\n.listView{\n&nbsp;&nbsp;&nbsp;&nbsp;padding-bottom:&nbsp;50px;\n}\n.listView&amp;gt;view&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;padding:&nbsp;10px;\n}\n\n.rightView&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;text-align:&nbsp;right;\n}\n\n.imgmsgleft&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;display:&nbsp;flex;\n&nbsp;&nbsp;&nbsp;&nbsp;justify-content:&nbsp;flex-start;\n&nbsp;&nbsp;&nbsp;&nbsp;align-items:&nbsp;center;\n}\n\n.imgmsgleft&amp;gt;view:last-child&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;border:&nbsp;solid&nbsp;1px&nbsp;gray;\n&nbsp;&nbsp;&nbsp;&nbsp;padding:&nbsp;10px;\n&nbsp;&nbsp;&nbsp;&nbsp;border-radius:&nbsp;6px;\n}\n\n.imgmsg&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;display:&nbsp;flex;\n&nbsp;&nbsp;&nbsp;&nbsp;justify-content:&nbsp;flex-end;\n&nbsp;&nbsp;&nbsp;&nbsp;align-items:&nbsp;center;\n}\n\n.imgmsg&amp;gt;view:first-child&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;border:&nbsp;solid&nbsp;1px&nbsp;gray;\n&nbsp;&nbsp;&nbsp;&nbsp;padding:&nbsp;10px;\n&nbsp;&nbsp;&nbsp;&nbsp;border-radius:&nbsp;6px;\n&nbsp;&nbsp;&nbsp;&nbsp;background-color:&nbsp;green;\n}\n\n.touimg&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;width:&nbsp;50px;\n&nbsp;&nbsp;&nbsp;&nbsp;height:&nbsp;50px;\n}\n\n.name&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;font-size:&nbsp;14px;\n&nbsp;&nbsp;&nbsp;&nbsp;color:&nbsp;gray;\n}\n\n.sendView&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;display:&nbsp;flex;\n&nbsp;&nbsp;&nbsp;&nbsp;width:&nbsp;100%;\n&nbsp;&nbsp;&nbsp;&nbsp;position:&nbsp;fixed;\n&nbsp;&nbsp;&nbsp;&nbsp;bottom:&nbsp;0px;\n&nbsp;&nbsp;&nbsp;&nbsp;border-top:&nbsp;1px&nbsp;#ededed&nbsp;solid;\n&nbsp;&nbsp;&nbsp;&nbsp;background-color:&nbsp;white;\n}\n\n.sendView&amp;gt;button&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;width:&nbsp;20%;\n}\n\n.sendView&amp;gt;input&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;width:&nbsp;80%;\n&nbsp;&nbsp;&nbsp;&nbsp;height:&nbsp;auto;\n}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/img-blog.csdn.net\/20180810132552336?watermark\/2\/text\/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zODM2NDEwOQ==\/font\/5a6L5L2T\/fontsize\/400\/fill\/I0JBQkFCMA==\/dissolve\/70\" title=\"node.js\u6765\u5b9e\u73b0\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u5b9e\u65f6\u804a\u5929\u529f\u80fd\uff08\u9644\u4ee3\u7801\uff09\u63d2\u56fe2\" alt=\"node.js\u6765\u5b9e\u73b0\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u5b9e\u65f6\u804a\u5929\u529f\u80fd\uff08\u9644\u4ee3\u7801\uff09\u63d2\u56fe2\" \/><\/p>\n<p>\u9884\u89c8\u7684\u65f6\u5019\u4e00\u5b9a\u8981\u6253\u5f00\u8c03\u8bd5\uff0c\u56e0\u4e3a\u8fd9\u4e0d\u662fwss\u534f\u8bae\uff0c\u662f\u6ca1\u6cd5\u76f4\u63a5\u7528\u7684<\/p>\n<p>\u76f8\u5173\u63a8\u8350\uff1a<\/p>\n<p><\/p>\n<p><\/p>\n<\/p>\n<p>\u4ee5\u4e0a\u5c31\u662fnode.js\u6765\u5b9e\u73b0\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u5b9e\u65f6\u804a\u5929\u529f\u80fd\uff08\u9644\u4ee3\u7801\uff09\u7684\u8be6\u7ec6\u5185\u5bb9\uff0c\u66f4\u591a\u8bf7\u5173\u6ce8\u7c73\u4e91\u5176\u5b83\u76f8\u5173\u6587\u7ae0\uff01<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u672c\u7bc7\u6587\u7ae0\u7ed9\u5927\u5bb6\u5e26\u6765\u7684\u5185\u5bb9\u662f\u5173\u4e8e\u5982\u4f55\u4f7f\u7528node.js\u6765\u5b9e\u73b0\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u5b9e\u65f6\u804a\u5929\u529f\u80fd\uff08\u9644\u4ee3\u7801\uff09\uff0c\u6709\u4e00\u5b9a\u7684\u53c2\u8003\u4ef7\u503c\uff0c\u6709\u9700\u8981\u7684\u670b\u53cb\u53ef\u4ee5\u53c2\u8003\u4e00\u4e0b\uff0c\u5e0c\u671b\u5bf9\u4f60\u6709\u6240\u5e2e\u52a9\u3002 \u6211\u5bf9im\u8fd9\u5757\u53ef\u8c13\u662f\u771f\u6b63\u7684\u5c0f\u767d\uff0c\u6240\u4ee5\u6ca1\u63a5\u89e6\u8fc7\u7684\u53ef\u4ee5\u6765\u53c2\u8003\u53c2\u8003\u3002\u5728\u5fae\u4fe1\u8fd9\u4e2a\u804a\u5929\u5de5\u5177\u91cc\u7684\u5c0f\u7a0b\u5e8f\u4e0a\u5b9e\u73b0\u804a\u5929\u529f\u80fd\uff0c\u603b\u611f\u89c9\u602a\u602a\u7684\u3002\u4f46\u9886\u5bfc\u8981\u6c42\u4e86\uff0c\u603b\u662f\u8981\u5e72\u7684\u3002 \u7136\u540e\u5c31\u5b9e\u65f6\u901a\u8baf\u8fd9\u4e2a\u5173\u952e\u8bcd\u5c55\u5f00\u641c\u7d22\uff0c\u7a7f\u68ad\u4e8e\u7f51\u9875\u4e4b\u95f4\u3002\u4e0d\u8fc7\u7c98\u8d34\u590d\u5236\u7684\u771f\u7684\u592a\u591a\u4e86\uff0c\u627e\u4e86\u534a\u5929\u4e5f\u6ca1\u627e\u5230\u60f3\u8981\u7684\uff0c\u4e0d\u8fc7\u8fd8\u662f\u63d0\u53d6\u5230\u4e86\u5173\u952e\u8bcdWebSocket\u548cnode.js\uff0c\u7136\u540e\u641c\u7d22\u8fd9\u4e24\u662f\u5565\uff0c\u4ec0\u4e48\u5173\u7cfb\uff0c\u603b\u7b97\u660e\u767d\u4e86\u4e00\u70b9\u3002 \u6700\u540e\u786e\u5b9a\u4e86\u7b2c\u4e00\u6b65\u9700\u8981\u5e72\u7684\u662f\u7528\u7684node.js\u642d\u5efa\u670d\u52a1\uff08\u6211\u662f\u88c5\u5728\u81ea\u5df1\u7684\u7a97\u53e3\u4e0b\u7684\uff09\uff1a 1.\u9996\u5148\u5230\u5b98\u7f51\u4e0b\u8f7dnode.js\uff0c\u8fde\u63a5\uff1ahttps\uff1a&nbsp; &nbsp;\/\/nodejs.org\/en\/\u5b89\u88c5\u5f88\u7b80\u5355\uff0c\u53cc\u51fb\u4e0b\u8f7d\u597d\u7684\u6587\u4ef6\uff0c\u76f4\u63a5\u4e0b\u4e00\u6b65\u4e00\u6b65\uff0c\u6ca1\u4ec0\u4e48\u7279\u6b8a\u7684\u9009\u62e9\uff0c\u8def\u5f84\u9ed8\u8ba4\u5c31\u597d&nbsp; &nbsp;\u53ef\u4ee5\u6253\u5f00\u547d\u4ee4\u884c\u7a97\u53e3\u8f93\u5165\u8282\u70b9-v\u4f1a\u8f93\u51fa\u7248\u672c\uff0c\u6765\u68c0\u9a8c\u662f\u5426\u5b89\u88c5\u6210\u529f\uff0c\u5176\u5b9e\u8fd9\u4e2a\u4e5f\u6ca1\u4ec0\u4e48\u5fc5\u8981 2.\u7136\u540e\u65b0\u5efa\u4e00\u4e2a\u6587\u4ef6\u5939\uff08\u6211\u7684node.js\u662f\u5b89\u88c5\u5728?\u76d8\u7684\uff0c\u7136\u540e\u518dd\u76d8\u4e0b\u65b0\u5efa\u4e86\u4e2a\u53eb\u7f51\u9875\u5957\u63a5\u5b57\u7684\u6587\u4ef6\u5939\uff09&nbsp; &nbsp;\u7136\u540e\u7528\u547d\u4ee4\u8f6c\u5230\u8be5\u76ee\u5f55\u4e0b\uff1a&nbsp; &nbsp;\u5728\u8fd9\u4e2a\u6587\u4ef6\u4e0b\u5b89\u88c5\u6211\u4eec\u8981\u4f7f\u7528\u7684\u6a21\u5757\uff1a&nbsp; &nbsp;\u5b89\u88c5\u6a21\u5757\u524d\u9700\u8981\u5148\u751f\u6210\u4e00\u4e2a\u914d\u7f6e\u6587\u4ef6\uff0c\u4e0d\u7136\u4f1a\u62a5\u9519\uff08\u53cd\u6b63\u6211\u62a5\u4e86\uff09 &nbsp; &nbsp;\u751f\u6210\u914d\u7f6e\u6587\u4ef6\u547d\u4ee4\uff1anpm init -f&nbsp; &nbsp;\u6267\u884c\u540e\u53ef\u4ee5\u770b\u5230\u5728\u8be5\u6587\u4ef6\u4e0b\u591a\u4e86\u4e00\u4e2a\u53ebpackage.json\u7684\u914d\u7f6e\u6587\u4ef6\uff0c\u5148\u4e0d\u7528\u7ba1\uff08\u540e\u9762\u4e5f\u6ca1\u7ba1\u8fc7\uff09\uff0c\u63a5\u4e0b\u6765\u7ee7\u7eed\u5b89\u88c5\u6a21\u5757\u7684\u64cd\u4f5c&nbsp; &nbsp;\u521a\u5f00\u59cb\u6211\u662f\u5b89\u88c5\u7684socket.io\uff0c\u540e\u6765\u53d1\u73b0\u5c0f\u7a0b\u5e8f\u6839\u672c\u7528\u4e0d\u4e86\uff0c\u6240\u4ee5\u8fd9\u91cc\u4e5f\u4e0d\u8bf4socket.io\u4e86\u3002\u6211\u4eec\u8fd9\u91cc\u7528ws&nbsp; &nbsp;\u5b89\u88c5ws\u547d\u4ee4\uff1anpm install &#8211;save ws\uff08\u5378\u8f7d\u6a21\u5757\u547d\u4ee4\uff1anpm uninstall\u6a21\u5757\u540d\u5b57\uff09 3.\u5b89\u88c5\u597d\u6a21\u5757\u540e\uff0c\u5728\u4f60\u76ee\u5f55\u4e0b\u521b\u5efa\u4e00\u4e2a\u7684.js\u6587\u4ef6\uff0c\u6211\u8fd9\u662f\u4e00\u4e2aws.js \u6211\u8fd9\u91cc\u80af\u5b9a\u4f1a\u6bd4\u4f60\u4eec\u7684\u6587\u4ef6\u8981\u591a\uff0c\u4e0d\u7528\u8fd9\u4e2a\u5728\u610f\u7136\u540e\u6253\u5f00\u8fd9\u4e2a\u7684.js\u6587\u4ef6\uff0c\u5f00\u59cb\u7f16\u8f91\u4f60\u7684\u670d\u52a1\u7aef\u4ee3\u7801\uff0c\u8fd9\u4e2a\u968f\u4fbf\u4f60\u7528\u8bb0\u4e8b\u672c\u8fd8\u662f\u5176\u4ed6\u4ec0\u4e48\u8f6f\u4ef6\u8fd9\u662f\u6700\u7b80\u5355\u57fa\u7840\u7684\u4e00\u4e2a\u6253\u5f00\u8fde\u63a5\uff0c\u54cd\u5e94\u7684\u4ee3\u7801\uff1a \/\/\u5f15\u5165ws\u6a21\u5757 const&nbsp;WebSocket&nbsp;=&nbsp;require(&#8216;ws&#8217;); \/\/\u521b\u5efa\u670d\u52a1&nbsp;port\u662f\u7aef\u53e3 const&nbsp;wss&nbsp;=&nbsp;new&nbsp;WebSocket.Server({&nbsp;port:&nbsp;80}); \/\/\u5ba2\u6237\u7aef\u8fde\u63a5\u65f6\u4f1a\u8fdb\u8fd9\u4e2a wss.on(&#8216;connection&#8217;,&nbsp;function&nbsp;connection(ws)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;console.log(&#8216;\u8fde\u63a5\u6210\u529f&#8217;); &nbsp;&nbsp;&nbsp;&nbsp;\/\/\u5ba2\u6237\u7aef\u53d1\u9001\u6d88\u606f\u65f6\u4f1a\u89e6\u53d1\u8fd9\u4e2a &nbsp;&nbsp;&nbsp;&nbsp;ws.on(&#8216;message&#8217;,&nbsp;function&nbsp;incoming(data)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(&#8216;\u6536\u5230\u6d88\u606f&#8217;); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/data\u662f\u5ba2\u6237\u7aef\u53d1\u9001\u7684\u6d88\u606f\uff0c\u8fd9\u91ccclients.foreach\u662f\u5e7f\u64ad\u7ed9\u6240\u6709\u5ba2\u6237\u7aef &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wss.clients.forEach(function&nbsp;each(client)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u628a\u5ba2\u6237\u7aef\u53d1\u6765\u7684data\uff0c\u5faa\u73af\u53d1\u7ed9\u6bcf\u4e2a\u5ba2\u6237\u7aef &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;client.send(data); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}); &nbsp;&nbsp;&nbsp;&nbsp;}); }); \u767b\u5f55\u540e\u590d\u5236 \u8fd9\u91cc\u8d34\u4e0a\u7a0d\u5fae\u6bd4\u8f83\u5b8c\u5584\u7684\u4ee3\u7801\uff0c\u8fd9\u91cc\u662f\u7528\u6570\u636e\u5e93\u4fdd\u5b58\u7684\u53d1\u9001\u7684\u6d88\u606f\uff0c\u7528\u7684mysql\uff0c\u6240\u4ee5\u9700\u8981\u5728\u5b89\u88c5mysql\u6a21\u5757npm install &#8211;save mysql\u4ee3\u7801\uff1a\u8fd9\u91cc\u6709\u5f88\u591a\u6ce8\u91ca\u7684\u4ee3\u7801\uff0c\u90fd\u662f\u6211\u7814\u7a76\u65f6\u7528\u5230\u7684\uff0c\u65e0\u89c6\u53ef\u4ee5\u5220\u6389\u6216\u8fd9\u4e2aMySQL\u7684\u7684\u6570\u636e\u8fde\u63a5\u9700\u8981\u6839\u636e\u81ea\u5df1\u7684\u4fee\u6539\uff0c\u4e5f\u662f\u8868\u6211\u8fd9\u7528\u5230\u7684\u8868\u5c31\u4e24\u4e2a\u5b57\u6bb5ID\uff0c\u5473\u7cbe var&nbsp;http=require(&#8216;http&#8217;); var&nbsp;qs&nbsp;=&nbsp;require(&#8216;querystring&#8217;);&nbsp;\/\/ var&nbsp;ws=require(&#8216;ws&#8217;); var&nbsp;server=http.createServer(function&nbsp;(req,&nbsp;res)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;res.end(&#8220;This&nbsp;is&nbsp;a&nbsp;WebSockets&nbsp;server!&#8221;); }); var&nbsp;url&nbsp;=&nbsp;require(&#8216;url&#8217;); \/\/\u9a8c\u8bc1\u51fd\u6570 function&nbsp;ClientVerify(info)&nbsp;{ [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19],"tags":[],"class_list":["post-32295","post","type-post","status-publish","format-standard","hentry","category-19"],"_links":{"self":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/32295","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/comments?post=32295"}],"version-history":[{"count":0,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/32295\/revisions"}],"wp:attachment":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/media?parent=32295"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/categories?post=32295"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/tags?post=32295"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}