2012-11-15 1 views
2

express를 사용하여 socket.io와 통신하는 express가있는 정적 페이지를 제공하려고합니다. 나는 문제가 생겨도 문제가 계속되고있다. 나는 여러 가지 일을했고봤을 때 여러 번 봤는데 내 문제에 대한 답을 찾지 못했다고 믿을 수 없다. 나는 당신에게 서버를 보여 주거나 당신에게 클라이언트를 보여줄 수있는 장소로 뛰어 다니지 만, 그곳과 통신하는 다른 사람은 보이지 않는다. 아니면 둘 다,하지만 표현과 함께. 익스프레스를 믹스에 넣으면 404를 얻고 socket.io 클라이언트 스크립트를 옮기고 작동시키지 못합니다. 이것은 제 20 번째 구성에 관한 것이지만 지금 당장에 있습니다.Node.js : Express로 작업 할 socket.io를 얻을 수 없으며 스크립트 파일에 404를 가져올 수 없습니다.

서버 :

var express = require('express'); 
var app = express(); 
var http = require('http'); 
var server = http.createServer(app); 
var io = require('socket.io').listen(server); 

app.configure(function() { 
    app.use(express.static('html')); 
}); 

app.listen(8080); 

io.sockets.on('connection', function (socket) { 
    console.log('A socket connected!'); 
}); 

클라이언트 :

<script src="/socket.io/socket.io.js"></script> 
<script> 
    var socket = io.connect('http://localhost:8080'); 
    socket.send('testing'); 
</script> 

내가 /html/socket.io.js에 SRC를 변경 시도 (및/dist 디렉토리에서 필요한 모든 파일을 복사 한 HTML), html 디렉토리에 scripts 디렉토리를 만들고 socket.io의 cdn에 연결을 시도했는데 404가 계속 나타납니다. 나는 어리 석고 단순한 무언가가 내가 엉망이된다는 것을 알고있다, 나는 단지 나 자신의 삶을 위해 그것을 이해할 수 없다. 감사!

편집 : 지금 당장하고 싶은 일은 index.html 페이지를 제공하고 서버 콘솔에 인쇄 할 때 인쇄합니다.

+0

socket.io와 함께 express를 사용하는 사람은 들어 본 적이 없으므로 대부분의 사람들은 일반적으로 connect를 사용합니다. –

+2

글쎄, 그건 잘못된거야. Express는 socket.io와 완벽하게 잘 작동합니다. – kimpettersen

+0

socket.io를 제거하고 순수 HTML을 렌더링하면 어떻게됩니까? 그게 효과가 있니? – kimpettersen

답변

8

예를 들어 here에서 살펴보십시오. 나는 app.listenserver.listen으로 바꾸어 익스프레스 3로 작업하게했다. socket.io가 설정하는 라우팅은 http 서버에만 해당되며 고속 라우팅 메커니즘을 사용하지 않는다고 생각합니다.

+0

아아. 나는 그 모든 예들을 다 겪어 왔지만, 그들 중 누구도 표현을 다룰 수 없었고, 나는 그들과 함께 일할 수 없었습니다. app.listen을 server.listen으로 변경하면 문제없이 html 페이지를 신속하게 제공하고 있습니다. 이제 나는 그것을 보았고, 그것은 완전히 의미가 있습니다. HTTP 서버를 청취 할 필요가있을 때이를 표현하기 위해 socket.io를 첨부하고있었습니다. 내가 본 예제는 표현을 듣고있는 것을 보여 주지만, 표현을 변경하기 전에는 더 이상 http 서버를 반환하지 않습니다. 감사! 이제 나는 주말 내내 함께 할 무언가를 갖게 될 것입니다. – sdouble

관련 문제