2013-11-14 53 views
3

的Javascript:使用Socket.io与Heroku的

var express = require('express') 
    , app = express() 
    , server = require('http').createServer(app) 
    , io = require('../../lib/socket.io').listen(server) 
    , dgram = require('dgram'); 

server.listen(5000); 

var client = dgram.createSocket('udp4'); 
var message = new Buffer("100 101 102"); 

app.use(express.static(__dirname + '/')); 

io.sockets.on('connection', function(socket) { 
    console.log("Server Connected"); 
    socket.on('message', function(data) { 
     console.log(data); 
     client.send(message, 0, message.length, 8888, '192.168.1.1') 
    }); 
}); 

相关HTML:

$(window).load(function(){ 
    socket = io.connect('/'); 
    $(window).click(function() { 
     sendData(100, 101, 102); 
    }); 
}); 

function sendData(redVal, greenVal, blueVal) { 
    socket.emit('message', redVal + " " + greenVal + " " + blueVal); 
} 

的package.json:

{ 
    "name": "LEDControl", 
    "description": "First attempt at mobile node.js and socket.io arduino control", 
    "version": "0.0.1-6", 
    "dependencies": { 
     "express": "3.x", 
     "socket.io": "~0.9.16" 
    }, 
    "engines": { 
     "node": "0.10.x", 
     "npm": "1.3.x" 
    } 
} 

我试图通过套接字来发送UDP数据包。 io到带有以太网屏蔽的Arduino。我在Heroku上运行这个。它在localhost上工作正常,但是当我尝试在Heroku上运行时它总是崩溃。该问题似乎与socket.io。 Websockets是Heroku的一项新功能,因此很难找到关于它的许多信息。我也在Nodejitsu上试过了,并得到了类似的结果。任何人都知道我在做什么错了?现在只要我点击屏幕就应该发送“100 101 102”。这个问题可能与Arduino以太网盾的局限性有关,我不确定。

回答

-1

您是否为您的应用程序启用了websockets(heroku labs:启用websockets -a appname)?

+1

是的,websockets已启用。 –