2016-08-21 2 views
-1

socket.io에 문제가 있습니다. 내 코드가 특정 경로에 을 표시하지 않습니다. '/'이 경로에서는 정상적으로 작동하지만 전송 버튼을 클릭하면 라우트가 '/ process_post'로 변경되어 sock.io에서 방출 된 값을 잡을 수 없습니다. 문제 해결을 도와주세요. 여기에 내 코드를 붙여 넣습니다. server.js socket.io 및 express-nodejs가 내 보낸 값을 인쇄 할 수 없습니다.

var express = require('express'); 
var app = express(); 
var server = require('http').Server(app); 
var io = require('socket.io')(server); 
var bodyParser = require('body-parser'); 

var bodyParser = require('body-parser'); 

app.use(express.static('public')); 

var urlencodedParser = bodyParser.urlencoded({ extended: false }) 

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

app.post('/process_post', urlencodedParser, function (req, res) { 

    // Prepare output in JSON format 
    response = { 
     first_name:req.body.first_name, 
     last_name:req.body.last_name 
    }; 
    console.log(response); 
    io.of('/process_post').on('connection', function(socket){ 
     socket.emit('news', { hello: 'world' }); 
    console.log('a user connected'); 
    }); 

res.end(JSON.stringify(response)); 
}) 

server.listen(3000, function(){ 
    console.log('listening on *:3000'); 
}); 

그리고 내 index.html 파일

<!DOCTYPE html> 
<html> 
<head> 
    <title></title> 
    <script src="https://cdn.socket.io/socket.io-1.4.5.js"></script> 
</head> 
<body> 
<form action="/process_post" method="POST"> 
First Name: <input type="text" name="first_name"> <br> 

Last Name: <input type="text" name="last_name"> 
<input type="submit" value="Submit"> 
</form> 
<script> 
    var socket = io.connect('http://localhost:3000'); 
    socket.on('news', function (data) { 
     console.log(data); 
    }); 
</script> 
</body> 
</html> 

답변

0

는 문서에서 살펴 보자 : http://socket.io/docs/#restricting-yourself-to-a-namespace

가에 연결해야 프론트 엔드에 당신의 소켓을 인스턴스화 설정 한 네임 스페이스.

var socket = io.connect('http://localhost:3000/process_post'); 

또한 나는 다른 이벤트 핸들러가 초기 소켓 후 것 경로가 충돌 할 때까지 호출되지 않는 코드의 부분으로 인해 연결되지 않을 것이다, 백엔드에 경로 이외의 소켓 선언을 제거 할 것 연결.

+0

안녕하세요. 답장을 보내 주셔서 감사합니다. 하지만 여전히 작동하지 않습니다. – naik3

관련 문제