与Heroku一起使用Socket.io

使用Javascript:

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" } } 

我试图通过socket.io将udp数据包发送到具有以太网屏蔽的Arduino。 我在Heroku上运行。 它在本地主机上运行正常,但是当我尝试在Heroku上运行时,它总是崩溃。 这个问题似乎与socket.io。 Websockets是Heroku的一个新function,所以很难find很多关于它的信息。 我也试过Nodejitsu,得到了类似的结果。 任何人都知道我在做什么错了? 现在只要点击屏幕就应该发送“100 101 102”。 这个问题可能是由于Arduino以太网盾的限制,我不确定。

你是否启用websockets( heroku实验室:启用websockets – 一个appname )为您的应用程序?