I was tried socket connection in AWS EC2 with ssl certified. i have created key file and also cert file, and attach my key into amazon load balance.
My server side code is
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);
});
My Client side code is
<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);
});
I run my server js in terminal. Initialy returns server listening
Then it goes to connect_error
- Connection Failed returns in my console.
My code working in my local system. What mistake i did, Is there any other configuration in AWS server?.