2016-08-25 1 views
0

Я тестирую демоверсию webrtc для рельсов, но у меня возникают проблемы с подключением. Я попробовал несколько вещей в Интернете, но не может взломать это, это может быть просто ошибка или фундаментальное непонимание, но то, что я сделал это:Не разрешает заголовок заголовка «Access-Control-Allow-Origin» с необработанным ключом socket.io

WebRTC рельсы с помощью NodeJS и Socket.io

Я использую localhost: 3000 для домашнего URL-страницы страницы, но я пытаюсь подключиться от клиента к серверу через localhost: 2013. У меня есть два сообщения об ошибке на данный момент:

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access. 

и

info - unhandled socket.io url (when running node server.js) 

Мой Настроенное это:

server.js

var http = require('http'); 
var app = http.createServer(function (req, res) { 
}).listen(2013); 

client.js

var socket = io.connect('localhost:2013'); 

socket.on("created", function(){ 
    console.log("On Created"); 
    isInitiator = true; 
    console.log('isInitiator', isInitiator); 
}) 

application.rb

config.middleware.insert_before 0, Rack::Cors do 
    allow do 
    origins '*' 
    resource '*', :headers => :any, :methods => [:get, :post, :options] 
    end 
end 

config.ru

require 'rack/cors' 

use Rack::Cors do 

    allow do 
    origins '*' 
    resource '*', 
     :headers => :any, 
     :methods => [:get, :post, :delete, :put, :options, :patch] 
    end 

end 

Я обновил все мои драгоценные камни и Socket.io. Я продолжаю задаваться вопросом, есть ли проблема в поиске socket.io, как если бы я перешел на страницу localhost: 3000/socket.io/socket.io.js, там ничего нет, как я ожидал бы ... Я также попытался добавить CORS заголовки в приложение rb rile без промежуточного слоя/стойки, но это не имеет никакого значения. Любая помощь очень ценится.

ответ

0

Во-первых, вы хотите добавить «http» - или независимо от протокола - к своим URL-адресам, к которым вы пытаетесь подключиться.

Во-вторых, вместо ссылки localhost ссылка 127.0.0.1. Все еще ссылайтесь на номер порта, как обычно.

var socket = io.connect('localhost:2013'); 

бы стать:

var socket = io.connect('http://127.0.0.1:2013'); 

Edit: Это будет работать только если серверы назначаются различные IP-адреса, по какой-то причине. Тем не менее, вы все равно хотите добавить протокол к своим URL-адресам.

+0

Спасибо, но все равно получите ту же проблему:/Я перезапустил сервер и узел рельсов, но все равно имею оба сообщения об ошибках. Я просто пытаюсь проверить, есть ли что-то хитрое в том, как я установил socket.io .... – suppp111

+0

Да, похоже, что библиотека socket.io не втягивается должным образом. Попробуйте его с версией CDN и посмотрите, помогает ли это что-либо. https://cdnjs.com/libraries/socket.io – Pytth

+0

Собственно, на консоли Chrome я получаю этот XMLHttpRequest не могу загрузить http://127.0.0.1:2013/socket.io/?EIO=3&transport=polling&t=LR1sHeT. В запрошенном ресурсе нет заголовка «Access-Control-Allow-Origin». Origin 'http: // localhost: 3000', следовательно, не разрешен доступ. ', И эта ссылка socket.io приведет вас к сокету io ... так что это выглядит немного похоже на то, что actaully является проблемой доступа ... – suppp111