2015-06-14 2 views
3

Я пытаюсь получить клиент Socket.IO для подключения к серверу Python Websocket, который я создал с помощью aaugustin's websockets library и asyncio. Используя пример на странице я создал следующий веб-сокет сервера:Как сделать клиент Socket.IO подключиться к серверу Python3 Websocket

import asyncio 
import websockets 
from datetime import datetime 

@asyncio.coroutine 
def producer(): 
    return str(datetime.now()) 

@asyncio.coroutine 
def handler(websocket, path): 
    while True: 
     message = yield from producer() 
     if not websocket.open: 
      break 
     yield from websocket.send(message) 
     yield from asyncio.sleep(3) 

start_server = websockets.serve(handler, "localhost", 8765) 
asyncio.get_event_loop().run_until_complete(start_server) 
asyncio.get_event_loop().run_forever() 

Вид подается с использованием Настой и выглядит следующим образом:

<!doctype html> 
<head> 
    <title>Websocket Client Test</title> 
</head> 
<body> 
    <script src="https://cdn.socket.io/socket.io-1.3.5.js"></script> 
    <script> 
     console.log(io); 
     var socket = io("ws://localhost:8765/"); 
     console.log(socket); 
    </script> 
</body> 

Всякий раз, когда Socket.IO пытается подключиться, его выдает следующее сообщение об ошибке:

XMLHttpRequest cannot load http://localhost:8765/socket.io/?EIO=3&transport=polling&t=1434254272412-0. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:5001' is therefore not allowed access. The response had HTTP status code 400. 

Доступ-Control-Allow-Origin, кажется, подразумевает, что я пытаюсь сделать запрос на месте с другим именем хоста, который я не делаю. Поэтому я не знаю, почему он выбрасывал эту ошибку. Я создал скрипт клиента Python, который прекрасно подключается к серверу, поэтому я немного потерял то, чего не хватает.

ответ

2

The Access-Control-Allow-Origin seems to imply I'm trying to make a request to a location with a different hostname, which I'm not doing.

Разный порт считается другим источником для множества реализаций. От https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy:

Two pages have the same origin if the protocol, port (if one is specified), and host are the same for both pages

Смежные вопросы