我在AWS EC2中尝试使用ssl认证的套接字连接。 我已创建密钥文件和证书文件,并将我的密钥附加到亚马逊负载平衡。
我的服务器端代码是
const socket = require( 'socket.io' );
const express = require( 'express' );
const https = require( 'https' );
const fs = require("fs");
var port = 8443;
var options = {
key: fs.readFileSync('/var/www/html/key/my.key').toString(),
cert: fs.readFileSync('/var/www/html/key/my.crt').toString(),
NPNProtocols: ['http/2.0', 'spdy', 'http/1.1', 'http/1.0']
};
var app = express();
var server = https.createServer(options , app);
var io = require('socket.io')(server);
io.sockets.on( 'connection', function( client ) {
console.log( "New client !" );
client.on( 'search_id', function( data ) {
console.log( 'Message received ' + data.search_id );
io.sockets.emit( 'search_id', { search_id: data.search_id } );
});
});
server.listen(8443, function () {
var addr = server.address();
console.log(' server listening on :' + addr.port);
});
我的客户端代码是
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.7.3/socket.io.js"></script>
var socket = io.connect( 'https://'+window.location.hostname+':8443' );
socket.emit( 'search_id', { search_id: search_id } );
socket.on('connect_error', function(data){
console.log(data);
console.log("Connection Failed");
});
socket.on( 'search_id', function( data ) {
console.log(data);
});
我在终端中运行我的服务器js。最初返回server listening
然后转到connect_error
- 我的控制台中的连接失败返回。
我的代码在我的本地系统中运行。我做了什么错误,AWS服务器中是否还有其他配置?