网友真实露脸自拍10p,成人国产精品秘?久久久按摩,国产精品久久久久久无码不卡,成人免费区一区二区三区

小程序模板網

用nodejs快速實現微信小程序的websocket服務端

發布時間:2018-02-01 18:37 所屬欄目:小程序開發教程

微信小程序對第三方服務端的網絡通信方式支持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命令生成 證書。

首先執行如下命令生成一個key

openssl genrsa -des3 -out ssl.key 1024
  • 1

然后他會要求你輸入這個key文件的密碼。不推薦輸入。由于生成時候必須輸入密碼。你可以輸入后 再刪掉。

mv ssl.key xxx.key
openssl rsa -in xxx.key -out ssl.key
rm xxx.key

然后根據這個key文件生成證書請求文件
openssl req -new -key ssl.key -out ssl.csr

以上命令生成時候要填很多東西 一個個看著寫吧(可以隨便,畢竟這是自己生成的證書)

最后根據這2個文件生成crt證書文件

openssl x509 -req -days 365 -in ssl.csr -signkey ssl.key -out ssl.crt

這里365是證書有效期 。這個隨意。最后使用到的文件是key和crt文件。

nodejs websocket(ssl)服務端實現,wss-sample.js

'use strict';

var fs = require('fs');

// you'll probably load configuration from config
var cfg = {
    ssl: true,
    port: 8080,
    ssl_key: 'ssl.key',
    ssl_cert: 'ssl.crt'
};

var httpServ = (cfg.ssl) ? require('https') : require('http');

var WebSocketServer = require('ws').Server;

var app = null;

// dummy request processing
var processRequest = function(req, res) {
    res.writeHead(200);
    res.end('All glory to WebSockets!\n');
};

if (cfg.ssl) {
    app = httpServ.createServer({
        // providing server with  SSL key/cert
        key: fs.readFileSync(cfg.ssl_key),
        cert: fs.readFileSync(cfg.ssl_cert)

    }, processRequest).listen(cfg.port);
} else {
    app = httpServ.createServer(processRequest).listen(cfg.port);
}

// passing or reference to web server so WS would knew port and SSL capabilities
var wss = new WebSocketServer({
    server: app
});

wss.on('connection', function(wsConnect) {
    wsConnect.on('message', function(message) {
        console.log(message);
        wsConnect.send('reply');
    });
});運行這個案例, 你需要先安裝ws庫。
npm install ws

運行:

node wss-sample.js

你可以在瀏覽器打開https://localhost:8080,在瀏覽器控制臺驗證一下websocket是否可以連接:

var socket = new WebSocket('wss://localhost:8080/');

socket.onmessage = function (e) {
  console.log('Server: ' + e.data);
};

socket.send('your message');
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

如果是在express框架下實現websocket(ssl)。wss-express.js:

'use strict'

var fs = require('fs');
var https = require('https');

var server = https.createServer(
    {
      'key':fs.readFileSync('ssl.key'),
      'cert':fs.readFileSync('ssl.crt')
    }
  );
var  url = require('url');
var  WebSocketServer = require('ws').Server;
var  wss = new WebSocketServer({
        server: server
      });
var express = require('express');
var app = express();
var port = 8080;

app.use(function(req, res) {
    res.send({
        msg: "hello"
    });
});

wss.on('connection', function connection(ws) {
    var location = url.parse(ws.upgradeReq.url, true);
    // you might use location.query.access_token to authenticate or share sessions
    // or ws.upgradeReq.headers.cookie (see http://stackoverflow.com/a/16395220/151312)

    ws.on('message', function incoming(message) {
        console.log('received: %s', message);
    });

    ws.send('something');
});

server.on('request', app);
server.listen(port, function() {
    console.log('Listening on ' + server.address().port)
});

簡單的微信小程序websocket服務端實現了。


易優小程序(企業版)+靈活api+前后代碼開源 碼云倉庫:starfork
本文地址:http://www.xiuhaier.com/wxmini/doc/course/21410.html 復制鏈接 如需定制請聯系易優客服咨詢:800182392 點擊咨詢
QQ在線咨詢
AI智能客服 ×