小程序用nodejs快速实现微信小程序的websocket服务端
2019-04-03 15:13:30
如何看待微信公开课小程序热门讨论「小程序用nodejs快速实现微信小程序的websocket服务端」
摘要:小程序用nodejs快速实现微信小程序的websocket服务端
展开:摘要:微信小程序服务端使用websocket方式。socket.io已作为nodejs体系中被广泛应用的websocket解决方案,却因socket.io对websocket做了高级封装,不能兼容微信小程序所采用的websocket标准协议无法直接使用,此外微信小程序还要求websocket必须是ssl的。本文着重介绍如何ws库和ssl证书实现微信小程序的websocket服务端。微信小程序对第三方服务端的网络通信方式支持https和Websocket。WebSocket是HTML5开始提供的一种在单个TCP连接上进行全双工通讯的协议。为了解决HTTP协议效率低下的问题,HTML5定义了WebSocket协议,能更好的节省服务器资源和带宽并达到实时通讯。WebSocket在数据传输的稳定性和数据传输量的大小方面,具有很大的性能优势。有不少公司将nodejs的socket.io作为websocket的解决方案,很遗憾的是socket.io是对websocket的封装,并不支持html5原始的websocket协议,微信小程序使用的websocket却是接近于html5原始websocket协议,socket.io居然没有用武之地了。当然情况也没有惨到需要你自己一步一步去实现websocket服务端,我们的大node有很多websocket库,ws就是其中一个,号称最轻量级,最快。ws的用法比较简单,直接看github说明(https://github.com/websockets/ws)就可以。我这里着重讲的是针对微信小程序实现的加入ssl的websocket实现。要使用ssl,首先你得有ssl证书,生产环境建议你去买一个ssl证书。开发环境你可以给自己生成一个ssl自签名证书临时用一下。这里说下Linux系统怎么通过openssl命令生成证书。首先执行如下命令生成一个keyopensslgenrsades3outssl.key1024然后他会要求你输入这个key文件的密码。不推荐输入。由于生成时候必须输入密码。你可以输入后再删掉。mvssl.keyxxx.keyopensslrsainxxx.keyoutssl.keyrmxxx.key然后根据这个key文件生成证书请求文件opensslreqnewkeyssl.keyoutssl.csr以上命令生成时候要填很多东西一个个看着写吧(可以随便,毕竟这是自己生成的证书)最后根据这2个文件生成crt证书文件opensslx509reqdays365inssl.csrsignkeyssl.keyoutssl.crt这里365是证书有效期。这个随意。最后使用到的文件是key和crt文件。nodejswebsocket(ssl)服务端实现,wsssample.jsusestrict;varfsrequire(fs);//youllprobablyloadconfigurationfromconfigvarcfg{ssl:true,port:8080,ssl_key:ssl.key,ssl_cert:ssl.crt};varhttpServ(cfg.ssl)?require(https):require(http);varWebSocketServerrequire(ws).Server;varappnull;//dummyrequestprocessingvarprocessRequestfunction(req,res){res.writeHead(200);res.end(AllglorytoWebSockets! );};if(cfg.ssl){apphttpServ.createServer({//providingserverwithSSLkey/certkey:fs.readFileSync(cfg.ssl_key),cert:fs.readFileSync(cfg.ssl_cert)},processRequest).listen(cfg.port);}else{apphttpServ.createServer(processRequest).listen(cfg.port);}//passingorreferencetowebserversoWSwouldknewportandSSLcapabilitiesvarwssnewWebSocketServer({server:app});wss.on(connection,function(wsConnect){wsConnect.on(message,function(message){console.log(message);wsConnect.send(reply);});});运行这个案例, 你需要先安装ws库。npminstallws运行:nodewsssample.js你可以在浏览器打开https://localhost:8080,在浏览器控制台验证一下websocket是否可以连接:varsocketnewWebSocket(wss://localhost:8080/);socket.onmessagefunction(e){console.log(Server:+e.data);};socket.send(yourmessage);如果是在express框架下实现websocket(ssl)。wssexpress.js:usestrictvarfsrequire(fs);varhttpsrequire(https);varserverhttps.createServer({key:fs.readFileSync(ssl.key),cert:fs.readFileSync(ssl.crt)});varurlrequire(url);varWebSocketServerrequire(ws).Server;varwssnewWebSocketServer({server:server});varexpressrequire(express);varappexpress();varport8080;app.use(function(req,res){res.send({msg:hello});});wss.on(connection,functionconnection(ws){varlocationurl.parse(ws.upgradeReq.url,true);//youmightuselocation.query.access_tokentoauthenticateorsharesessions//orws.upgradeReq.headers.cookie(seehttp://stackoverflow.com/a/16395220/151312)ws.on(message,functionincoming(message){console.log(received:%s,message);});ws.send(something);});server.on(request,app);server.listen(port,function(){console.log(Listeningon+server.address().port)});简单的微信小程序websocket服务端实现了。原作者:小水熊
摘要:小程序用nodejs快速实现微信小程序的websocket服务端
展开:摘要:微信小程序服务端使用websocket方式。socket.io已作为nodejs体系中被广泛应用的websocket解决方案,却因socket.io对websocket做了高级封装,不能兼容微信小程序所采用的websocket标准协议无法直接使用,此外微信小程序还要求websocket必须是ssl的。本文着重介绍如何ws库和ssl证书实现微信小程序的websocket服务端。微信小程序对第三方服务端的网络通信方式支持https和Websocket。WebSocket是HTML5开始提供的一种在单个TCP连接上进行全双工通讯的协议。为了解决HTTP协议效率低下的问题,HTML5定义了WebSocket协议,能更好的节省服务器资源和带宽并达到实时通讯。WebSocket在数据传输的稳定性和数据传输量的大小方面,具有很大的性能优势。有不少公司将nodejs的socket.io作为websocket的解决方案,很遗憾的是socket.io是对websocket的封装,并不支持html5原始的websocket协议,微信小程序使用的websocket却是接近于html5原始websocket协议,socket.io居然没有用武之地了。当然情况也没有惨到需要你自己一步一步去实现websocket服务端,我们的大node有很多websocket库,ws就是其中一个,号称最轻量级,最快。ws的用法比较简单,直接看github说明(https://github.com/websockets/ws)就可以。我这里着重讲的是针对微信小程序实现的加入ssl的websocket实现。要使用ssl,首先你得有ssl证书,生产环境建议你去买一个ssl证书。开发环境你可以给自己生成一个ssl自签名证书临时用一下。这里说下Linux系统怎么通过openssl命令生成证书。首先执行如下命令生成一个keyopensslgenrsades3outssl.key1024然后他会要求你输入这个key文件的密码。不推荐输入。由于生成时候必须输入密码。你可以输入后再删掉。mvssl.keyxxx.keyopensslrsainxxx.keyoutssl.keyrmxxx.key然后根据这个key文件生成证书请求文件opensslreqnewkeyssl.keyoutssl.csr以上命令生成时候要填很多东西一个个看着写吧(可以随便,毕竟这是自己生成的证书)最后根据这2个文件生成crt证书文件opensslx509reqdays365inssl.csrsignkeyssl.keyoutssl.crt这里365是证书有效期。这个随意。最后使用到的文件是key和crt文件。nodejswebsocket(ssl)服务端实现,wsssample.jsusestrict;varfsrequire(fs);//youllprobablyloadconfigurationfromconfigvarcfg{ssl:true,port:8080,ssl_key:ssl.key,ssl_cert:ssl.crt};varhttpServ(cfg.ssl)?require(https):require(http);varWebSocketServerrequire(ws).Server;varappnull;//dummyrequestprocessingvarprocessRequestfunction(req,res){res.writeHead(200);res.end(AllglorytoWebSockets! );};if(cfg.ssl){apphttpServ.createServer({//providingserverwithSSLkey/certkey:fs.readFileSync(cfg.ssl_key),cert:fs.readFileSync(cfg.ssl_cert)},processRequest).listen(cfg.port);}else{apphttpServ.createServer(processRequest).listen(cfg.port);}//passingorreferencetowebserversoWSwouldknewportandSSLcapabilitiesvarwssnewWebSocketServer({server:app});wss.on(connection,function(wsConnect){wsConnect.on(message,function(message){console.log(message);wsConnect.send(reply);});});运行这个案例, 你需要先安装ws库。npminstallws运行:nodewsssample.js你可以在浏览器打开https://localhost:8080,在浏览器控制台验证一下websocket是否可以连接:varsocketnewWebSocket(wss://localhost:8080/);socket.onmessagefunction(e){console.log(Server:+e.data);};socket.send(yourmessage);如果是在express框架下实现websocket(ssl)。wssexpress.js:usestrictvarfsrequire(fs);varhttpsrequire(https);varserverhttps.createServer({key:fs.readFileSync(ssl.key),cert:fs.readFileSync(ssl.crt)});varurlrequire(url);varWebSocketServerrequire(ws).Server;varwssnewWebSocketServer({server:server});varexpressrequire(express);varappexpress();varport8080;app.use(function(req,res){res.send({msg:hello});});wss.on(connection,functionconnection(ws){varlocationurl.parse(ws.upgradeReq.url,true);//youmightuselocation.query.access_tokentoauthenticateorsharesessions//orws.upgradeReq.headers.cookie(seehttp://stackoverflow.com/a/16395220/151312)ws.on(message,functionincoming(message){console.log(received:%s,message);});ws.send(something);});server.on(request,app);server.listen(port,function(){console.log(Listeningon+server.address().port)});简单的微信小程序websocket服务端实现了。原作者:小水熊
标签:小程序
「小程序用nodejs快速实现微信小程序的websocket服务端」热门讨论订阅
方法1:微信扫描微信公开课小程序码即可订阅热门讨论「小程序用nodejs快速实现微信小程序的websocket服务端」
方法2:微信搜索微信公开课小程序名称进入,即可订阅热门讨论「小程序用nodejs快速实现微信小程序的websocket服务端」
方法3:微信网页访问即速商店,长按识别微信公开课小程序码即可订阅热门讨论「小程序用nodejs快速实现微信小程序的websocket服务端」
微信公开课小程序热门讨论「小程序用nodejs快速实现微信小程序的websocket服务端」由微信公开课原创摘录于微信小程序商店shop.jisuapp.cn,转载请注明出处。
微信公开课热门讨论「小程序用nodejs快速实现微信小程序的websocket服务端」由微信公开课开发者向微信用户提供,并对本服务内容、数据资料及其运营行为等真实性、合法性及有效性承担全部责任。
微信公开课小程序
更新时间:2019-04-03 15:13:30
>
__methodCallerx27;ofundefined
>-404011cloudfunctionexecutionerror
>,请补充选择商家自营-预付卡销售-发行方类目,并在基础信息处申请该类目,通过
>:host在模拟器中显示无效
>:请在小程序服务页面上架正式(非测试)内容或商品后重新提交审核
>.net 微信小程序 上传图片
>'setTimeout'的问题
>‘三朵里熙SPA主题减压空间’为什么搜索关键词‘三朵里‘搜不到
>‘扫普通链接二维码打开小程序‘中设置为体验版,扫码打开是线上版本
>“cloudfunctions**indexjs”gitignore
>“NO ULINK DEVICE FOUND”是怎么回事
>“万马掌上校园”的类目审核
>“上线了”公司开发的微信小程序怎么样?
>“产品是否一定需要条形码”
>