【发布时间】: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