node.js+socket.io无法在heroku上运行
node.js +socket.io is not working on heroku
以下部分代码用于从TI传感器标签中检索数据。因此,我们使用sensortag node.js模块来获取数据,并使用socket.io将其发送到客户端。在本地主机上,应用程序运行良好,但当我将代码推送到heroku云网络套接字时,部分不工作。
错误:服务器的响应状态为400(错误请求)https://peaceful-plateau-6281.herokuapp.com/socket.io/?EIO=3&transport=轮询&t=1449192192332-3400(错误请求)
以下是我的代码:
var express = require('express');
var port = process.env.PORT || 3000;
var app = module.exports.app = express();
var server = require('http').Server(app);
//var io = require('socket.io')(server);
var SensorTag = require('sensortag');
var path = require('path');
var io = require('socket.io').listen(server.listen(port,function(){
console.log("We have started our server on port " + server.address().port);
// SensorTag.discover(function(tag) { and close it with }); above ondiscover mthod
function onDiscover(tag){
tag.on('disconnect', function() {
console.log('disconnected!');
process.exit(0);
});
function connectAndSetUpMe() { // attempt to connect to the tag
console.log('connectAndSetUp' + tag.id);
tag.connectAndSetUp(enableDataPoints); // when you connect, call enableIrTempMe
}
function enableDataPoints(){
console.log('enabling Temp datapoint');
tag.enableIrTemperature(notifyMe);
tag.enableHumidity(notifyHumd);
tag.enableBarometricPressure(notifyPress);
tag.enableAccelerometer(notifyAccel);
}
function notifyMe(){
console.log("notifying temp datapoints");
tag.notifyIrTemperature(listenForReading);
}
function notifyHumd(){
console.log("notifying humd datapoints");
tag.notifyHumidity(listenForHumdReading);
}
function notifyPress(){
console.log("notify pressure");
tag.notifyBarometricPressure(listenForPress);
}
function notifyAccel(){
console.log("notify Accerlerometer");
tag.notifyAccelerometer(listenForAcc);
}
function listenForReading(){
tag.on('irTemperatureChange', function(objectTemp, ambientTemp) {
console.log(''tObject Temp = %d deg. C', objectTemp.toFixed(1));
function TempChange() {
io.sockets.emit('objTemp', { sensorId:tag.id, objTemp: objectTemp, ambTemp: ambientTemp});
};
TempChange();
});
}
connectAndSetUpMe();
}
SensorTag.discover(onDiscover);
})
);
io.on('connection', function () {
io.set("transports", ["xhr-polling"]);
io.set("polling duration", 10);
});
在客户端
<head>
<script src='/socket.io/socket.io.js'></script>
<script>
<script>
var socket = io.connect("'/'/"+window.location.hostname+":"+location.port);
//var socket = io.connect(window.location.hostname);
console.log("window.location.hostname"+location.port);
socket.on('objTemp', function(data) {
$('#objTemp').html(parseInt(data.objTemp));
console.log("This is my places");
$('#ambTemp').html(parseInt(data.ambTemp));
</script>
</head>
<body>
<p id="objTemp"></p>
</body>
</html>
我没有通过网络套接字获取客户端的数据。有人能帮我吗。
谢谢&当做Shivadeepthi
我也有同样的错误,只是修复了。
var io = require('socket.io').listen(server);
io.set('origins', '*:*');
io.set('match origin protocol', true);
相关文章:
- 如何使用phaser使html5游戏在移动设备浏览器上运行
- 使用压缩的JavaScript文件(不是运行时压缩)
- Javascript运行php文件,然后下载文件
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- 我已经创建了一个jquery转盘,并使用if条件来运行和停止转盘
- Angularjs代码未在匿名函数中运行
- Jquery在生产和Heroku中不起作用,但在开发中运行良好
- Javascript和Heroku.脚本未在服务器上运行,即使它在本地运行
- 使用 heroku 运行 angularjs 种子应用程序时出错
- Javascript功能可以在localhost上运行,但在部署到Heroku时则不然
- node.js+socket.io无法在heroku上运行
- 在heroku上运行每个cronjob的casperjs
- 莫代尔没有在heroku上工作;但在本地运行良好
- 如何远程获取在heroku上运行的phantomjs脚本的答案
- Javascript不能在rails 3.1的heroku上运行
- Angularjs应用程序运行在本地主机上,而不是在heroku上
- Knockout只有在Heroku上运行应用程序时才能解析绑定
- 将 Rails 3.1 项目部署到 Heroku 时出现问题:找不到 JavaScript 运行时
- 不能运行自定义脚本在rails 4在heroku,但localhost是
- Heroku部署错误:无法获得运行后的Node应用程序部署:无法找到模块'/ App /web.js'