【问题标题】:Not able to print value emitted by socket.io and express-nodejs无法打印 socket.io 和 express-nodejs 发出的值
【发布时间】:2016-12-28 02:35:27
【问题描述】:

我在 socket.io 中遇到问题。我的代码没有在特定路线上发出 value。在“/”这条路线上它工作正常,但是一旦我单击提交按钮,路线就会更改为“/process_post”,我无法通过 sock.io 捕获发出的值。请帮我解决问题。在这里我粘贴我的代码。 server.js

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>

【问题讨论】:

    标签: javascript node.js sockets express


    【解决方案1】:

    看看他们的文档:http://socket.io/docs/#restricting-yourself-to-a-namespace

    在前端实例化您的套接字时,它需要连接到您设置的命名空间。

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

    此外,我会在后端的路由之外删除套接字声明,否则将不会附加事件处理程序,因为这部分代码在路由被命中之前不会被调用,这将是在初始套接字连接之后。

    【讨论】:

    • 嗨..谢谢你的回复。但它仍然无法正常工作。
    猜你喜欢
    • 2013-12-19
    • 1970-01-01
    • 2023-03-19
    • 2018-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-18
    • 1970-01-01
    相关资源
    最近更新 更多