【问题标题】:Passing data from client to server using node.js + socket.io + express/ejs使用 node.js + socket.io + express/ejs 将数据从客户端传递到服务器
【发布时间】:2014-03-04 23:57:12
【问题描述】:

我试图弄清楚如何从 node.js + socket.io 应用程序的前端访问数据。使用“heroku logs --tail”(实时日志记录),在输入内容并点击提交后,我会得到即时响应:

debug: xhr-polling received data packet 5:::{"name":"data","args":[{"hash":"<whatever I put in the input"}]}

但我无法访问它来记录它。下面的 console.log 行甚至从未执行过。

Heres by backend server.js

app.get('/', function(req, res){
  res.render('index.ejs', {
  layout:false,
  locals: {
    someVariable: "blah"
  }
});

// Get Form Data
io.sockets.on('data', function(data) {
  console.log("heres the hash " + data.hash);
});

这在我的前端

<form>
        <span class="label">#</span><input type="text" name="hashtag" id="hashtag" placeholder="hashtag">
        <input type="submit" id="submit" value="Roll em in!">
</form>

<script>
var socket = io.connect();
$('#submit').on('click', function(event) {
  event.preventDefault();
  alert('clicked!');
  socket.emit('data', {
    hash: $('#hashtag').val()
  });
});
</script>

【问题讨论】:

  • 你客户端的io.connect()真的有服务器地址和端口吗?
  • 是的,应用程序中的其他所有内容都可以正常工作,只是粘贴了很多内容,我只是粘贴了必要的 sn-ps。这是我的脚本的顶部: var util = require('util'), http = require('http'), express = require('express'), ejs = require('ejs'), app = express(); var port = process.env.PORT || 3000; var server = app.listen(port); var io = require('socket.io').listen(server); // for heroku io.configure(function () { io.set("transsports", ["xhr-polling"]); io.set("polling duration", 10); });
  • 没想到会粘贴不返回,新来的,抱歉。

标签: node.js heroku express socket.io ejs


【解决方案1】:

这样做怎么样:

io.sockets.on('connection', function(socket) {
  socket.on('data', function(data){
    console.log("heres the hash " + data.hash);
    });
});

【讨论】:

    猜你喜欢
    • 2016-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-28
    • 2019-07-19
    相关资源
    最近更新 更多