2016-08-21 6 views
-1

socket.ioに問題があります。私のコードは、特定のルートにを放出していません。 '/'このルートでは正常に動作していますが、送信ボタンをクリックするとルートが '/ process_post'に変更されます。sock.ioによって出力された値をキャッチできません。問題を解決するために私を助けてください。ここで私のコードを貼り付けています。 server.jssocket.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

関連する問題