node的ws模塊可以很方便地創(chuàng)建一個(gè)單純的標(biāo)準(zhǔn)websocket服務(wù),但是對(duì)于創(chuàng)建wss服務(wù)并沒(méi)有提供一個(gè)獨(dú)立的方法,還是使用創(chuàng)建ws服務(wù)的方法,在傳入?yún)?shù)對(duì)象里加了個(gè)自定義的https服務(wù)。
示例
var https=require('https');
var ws=require('ws');
var fs=require('fs');
var keypath=process.cwd()+'/server.key';//我把秘鑰文件放在運(yùn)行命令的目錄下測(cè)試
var certpath=process.cwd()+'/server.crt';//console.log(keypath);
//console.log(certpath);
var options = {
key: fs.readFileSync(keypath),
cert: fs.readFileSync(certpath),
passphrase:'1234'//如果秘鑰文件有密碼的話,用這個(gè)屬性設(shè)置密碼
};
var server=https.createServer(options, function (req, res) {//要是單純的https連接的話就會(huì)返回這個(gè)東西
res.writeHead(403);//403即可
res.end("This is a WebSockets server!\n");
}).listen(25550);
var wss = new ws.Server( { server: server } );//把創(chuàng)建好的https服務(wù)器丟進(jìn)websocket的創(chuàng)建函數(shù)里,ws會(huì)用這個(gè)服務(wù)器來(lái)創(chuàng)建wss服務(wù)
//同樣,如果丟進(jìn)去的是個(gè)http服務(wù)的話那么創(chuàng)建出來(lái)的還是無(wú)加密的ws服務(wù)
wss.on( 'connection', function ( wsConnect ) {
wsConnect.on( 'message', function ( message ) {
console.log( message );
});
});
wss創(chuàng)建出來(lái),其余的操作和普通的ws服務(wù)都是完全一樣的