通过套接字在http.request区域内发送var的内容

时间:2011-08-16 21:21:24

标签: node.js socket.io

我有一个用连接到Flash的节点编写的程序。在按下某个键的Flash中,按键通过套接字发送到节点,然后通过一些额外的文本将按键回送到Flash。 Flash部分工作正常。节点部分基本上工作,除了我连接到网页的一部分。我想要做的是获取网页的内容并通过套接字将其回送到Flash。这是我的代码:

var net = require('net');
var http = require('http'),
    sys = require('sys'),
    fs = require('fs');

var options = {
  host: 'theurl.com',
  port: 80,
  path: '/',
  method: 'POST'
};  

var msg;
var mySocket;

var server = net.createServer(function(socket) {
    mySocket = socket;
    mySocket.on("connect", onConnect);
    mySocket.on("data", onData);
});

function onConnect() {
    console.log("Connected to Flash");
}

function onData(d) {

    if(d == "exit\0") {
        console.log("exit");
        mySocket.end();
        server.close();
    } else if(d == "32\0") {
        var req = http.request(options, function(res) {
          res.setEncoding('utf8');
          res.on('data', function (chunk) {
            msg = chunk;
            console.log("in function: msg = " + msg);
            mySocket.write(msg, 'utf8');
          });
        });
        console.log("right after res: msg = " + msg);
        mySocket.write("right after res: "+msg, 'utf8');

        // write data to request body
        req.write('data\n');
        req.write('data\n');
        req.end();

        mySocket.write("32 part: " + d, 'utf8');
    } else {
        console.log("From Flash = " + d );
        mySocket.write(d, 'utf8');
    }
}

server.listen(8080, "192.168.0.1");

当我按下空格键(没有32)时,数据似乎被写入,但在我按下2个键之前不会显示在Flash端。请注意,“http.request”区域之外的部分正确显示在Flash端。所以res.on区域内的mysocket.write直到2个按键才出现,但是说“res之后”的mysocket.write就像我想要的那样出现。所以我认为我需要其中一件事发生:

1)从http.request区域返回的块在该区域外可见 2)http.request区域内的mysocket.write工作方式与http.request区域外的mysocket.write相同 3)将块存储到硬盘驱动器,然后重新读取以后存储的内容并发送

这些是我想到的选择。我认为#3没有意义,因为我似乎在程序中有var,但是无法在我想要的地方访问它。不知道为什么套接字在该区域内不会像在该区域之外那样写入相同内容,但是如果有一种方法可以做#1在我看来是最有意义的。我很乐意接受建议。谢谢你的时间。

的Darryl

0 个答案:

没有答案