2015-11-27 3 views
0

Я пытаюсь создать приложение для веб-чата и хочу подключить своего клиента к серверу socket.io с помощью https. Похоже, все в порядке, но клиент не подключается после всех ..Подключение socket.io client к https

код сервера:

var app = require('express')(); 
var fs = require('fs'); 
var options = { 
    key: fs.readFileSync('server.key'), 
    cert: fs.readFileSync('server.crt') 
}; 
var server = require('https').createServer(options, app).listen(3000,function(){ 
     console.log("Https server started on port 3000"); 
}); 
var io = require('socket.io').listen(server); 


app.get('/', function(req, res){ 
     res.sendFile(__dirname + '/index.html'); 
}); 


io.on('connection', function(socket){ 
    console.log("Client connected"); 
      /*....*/ 
}); 

Клиентский код для подключения к серверу:

$(function($){ 
var socket = io.connect('https://localhost:3000', {secure: true}); 
..... 
}); 

Это вид не запустите код внутри $ (function ($) .. Когда я делаю это http-сервером, он отлично работает.

ответ

0

Я решил проблему ..

Так что для HTTP это было достаточно, если вы начинаете свой скрипт на клиенте с

$(function(){ 
.... 
}); 

Но это не будет работать с HTTPS. я изменил его на

jQuery(function($){ 
.... 
})(jQuery); 

Довольно странно, но он работал на меня.

1

Просто

var socket = io.connect('/', {secure: true}); 

EDIT: По умолчанию Socket.io будет пытаться установить соединение на том же хосте, WebServer хостов веб-контента, поэтому нет необходимости в указании хоста/протокол/порт. В / говорится о подключении к пространству имен по умолчанию.

+0

, пожалуйста, объясните свой код – Chris

+0

Пожалуйста, добавьте свой комментарий к своему ответу – jezrael

+0

Это не решит проблему. –