2017-02-03 5 views
0

現在、SSL経由でWebSocketと通信するNSアプリケーションを作成しています。ここにサーバーコード(server.js)があります。NativeScriptアプリケーションからSSL経由でWebSocketと通信する方法はありますか?

var fs = require('fs'); 
var cfg = { 
port: 8082, 
ssl_key: fs.readFileSync('keys/server.key'), 
ssl_cert: fs.readFileSync('keys/server.crt'), 
ca: fs.readFileSync('keys/ca.crt') 
}; 

var httpServ = require('https'); 

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");     
}; 

app = httpServ.createServer({ 

     // providing server with SSL key/cert 
     key: cfg.ssl_key, 
     cert: cfg.ssl_cert, 
     ca: cfg.ssl.ca, 
     passphrase: '1234', 
     requestCert: true, 
     rejectUnauthorized: false, 

     }, processRequest).listen(cfg.port); 

var wss = new WebSocketServer({ server: app }); 

wss.on('connection', function(ws) { 
console.log("Connected!"); 
ws.on('message', function(message) { 
console.log('received: %s', message); 
}); 
ws.send('something'); 
}); 

サーバーは問題なく正常に動作しています。以下は、クライアントコード(wsclient.js)は次のとおりです。

const WebSocket = require('ws'); 
const ws = new WebSocket('wss://localhost:8082'); 
ws.on('open', function open() { 
    ws.send("dummy"); 
    ws.on('error', function(evt) { 
     console.log("The socket had an error", evt.error); 
    }); 
}); 

私はnode wsclient.jsを入力してクライアントを実行したとき、それは次のエラーをスロー:

Error: unable to verify the first certificate

もちろん、エラーがないことによって引き起こされました要求に証明書情報を提供する。しかし、私はクライアントコードでこれをどうやって行うのか分かりません。任意の手がかりや提案に感謝します。

答えて

0

は、最後に私は答えを見つけた:

const WebSocket = require('ws'); 
const ws = new WebSocket('wss://localhost:8082',{ 
    key: fs.readFileSync('./keys/client.key'), 
    cert: fs.readFileSync('./keys/client.crt'), 
    ca: fs.readFileSync('./keys/ca.crt') 
}); 
ws.on('open', function open() { 
    ws.send("dummy"); 
    ws.on('error', function(evt) { 
     console.log("The socket had an error", evt.error); 
    }); 
}); 

今では動作します!

関連する問題