2014-03-29 2 views
0

새로운 업그레이드 그러나 나는 다음을 수행하려고 : 그것은 putheader파이썬 HTTPLIB 웹 소켓 파이썬과 WebSocket을에 요청을

서버 코드가

var http = require('http'); 

http.createServer(function (request, response) { 
    console.log(request); 
}).on('upgrade', function(request, socket, head) { 
    console.log('Upgrade request! Woohoo!'); 
    socket.connect(8080, 'localhost', function(data) { 
     console.log('data'); 
    }); 
    socket.write('Socket is open!'); 
}).listen(8888); 
Node.js를

에 기록에 도달 할 때

import httplib 
conn = httplib.HTTPConnection('localhost:8888') 

conn.putheader('Connection', 'Upgrade') 
conn.putheader('Upgrade', 'websocket') 
conn.endheaders() 
conn.send('Hello to websocket!') 

충돌을

정확하지 않은 서버 코드에 대해 걱정하지 않아도됩니다. (필자의 파이썬 클라이언트에서 요청을 받아야 할 필요가있는 경우 수정 해 드리겠습니다) websocket u에 대한 연결을 업그레이드하는 방법이 궁금합니다. 가능하다면 httplib을 노래하십시오.

답변

0

확실치 않지만 httplib에 비동기 요청에 문제가 있습니다. 프레임 워크 tornado을 보면 그는 websocket 및 비동기 요청을 처리 할 수 ​​있으며 매우 간단합니다.

+0

일부 포인터를 얻기 위해 프레임 워크를 살펴볼 것입니다. 봐. – moesef

0

httplib은 WebSocket을 말하지 않습니다. 업그레이드 헤더를 수동으로 추가해도 마술처럼 그렇게 만들지는 않습니다. 또한 동 기적으로 작동하며 WebSocket의 경우 바람직하지 않습니다.

이미 언급 한 Tornado 외에 Twisted 및 asyncio를 기본 비동기 네트워크 라이브러리로 사용할 수있는 Autobahn도 있습니다.

공개 : 나는 Autobahn의 원작자이며 Tavendo에서 일합니다.

+0

. 내가 제공 한 프로젝트를 체크 아웃 할 것이지만 HTTPConnection 객체에서 소켓을 생성 할 수있는 방법이 있는지 물어야합니다. 또는 httplib와 소켓이 개별 모듈을 완성합니까? – moesef

+0

WebSocket은 "원시 TCP 소켓"이 아닙니다. 그래서 HTTPConnection의 기초가되는 원시 TCP 소켓에서 얻을 수 있다고하더라도, 그다지 도움이되지는 않을 것입니다. – oberstet

+0

나는 봅니다. 아마도 기술에 대해 좀 더 읽어 볼 필요가있을 것입니다. 내가 말했듯이, 처음으로 이런 것들을 어지럽히는 것 : P – moesef