我正嘗試使用websockets支持創建簡單的https服務器。我有一些https服務器和websockets的功能代碼,但都是獨立的。不知道如何組合它。我更喜歡使用免費使用庫(麻省理工學院,..)在node.js上使用websockets的Https服務器
我想能夠提供http請求和websockets。
Https升級示例,但不知道如何處理升級後的websocket連接,作爲我的第二個示例在下面這個。
connection. process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
var https = require('https');
var websocket = require('websocket');
var fs = require('fs');
var options = {
key:fs.readFileSync('./cert/server.key'),
cert:fs.readFileSync('./cert/server.crt')
};
var server = https.createServer(
options
, function(req,res) {
console.log('req');
res.writeHeader(200, { 'Content-Type': 'text/plain' });
res.write('test');
res.end();
}
);
server.on('upgrade', (req, socket, head) => {
console.log('upgrade ');
socket.write('HTTP/1.1 101 Web Socket Protocol Handshake\r\n' +
'Upgrade: WebSocket\r\n' +
'Connection: Upgrade\r\n' +
'\r\n');
socket.pipe(socket);
});
server.listen(8080, '127.0.0.1',() => {
// make a request
const options = {
port: 8080,
hostname: '127.0.0.1',
headers: {
'Connection': 'Upgrade',
'Upgrade': 'websocket'
}
};
const req = https.request(options);
req.end();
req.on('upgrade', (res, socket, upgradeHead) => {
console.log('got upgraded!');
*** so what to do here ***
/*
socket.end();
process.exit(0);
*/
});
});
這是功能性的websockets,但沒有處理簡單的http請求的可能性。
var https = require('https');
var ws = require('websocket').server;
var fs = require('fs');
var options = {
key:fs.readFileSync('./cert/server.key'),
cert:fs.readFileSync('./cert/server.crt')
};
var server = https.createServer(
options
, function(req,res) {
res.writeHeader(200);
res.end();
}
);
server.listen(8080);
var wss = new ws({httpServer:server});
var connectionNumber=0;
console.log('start ');
wss.on('request',function(req){
req.on('requestAccepted',function(conn){
conn.on('message',function(msg){
conn.send('test');
});
conn.on('close',function(msg){
});
});
req.accept(null,req.origin);
});
我正在尋找組合解決方案的功能實例,但沒有任何運氣。
看起來好,謝謝。 – Adam