简单的Access-Control-Allow-Origin与网络模块

时间:2017-03-02 12:54:34

标签: node.js

我在端口80上有两个服务器,一个是普通的Web服务器,而在端口8080上有一个服务器,它是一个广播服务器,它发送一个带有要显示的所有更新的文本字符串。但是浏览器给了我一个CORS header 'Access-Control-Allow-Origin' missing。是否有任何简单的方法让我添加网络包的标头?服务器代码如下所示:

创建服务器的代码:

var net = require('net');
var fs = require('fs');
var buffer = require('buffer');
var serverHost = "0.0.0.0";
var serverPort = 8080;
var splitter = require('./splitter.js');

var server = net.createServer(function(target) {

    // Socket errors
    target.on('error', function(error) {
        console.log('Socket error: ', error.message);
    });

    target.on('data', function(data){
        // TODO: Verify the data
        var number = parseInt(data);
        if(!isNaN(number)){
        // Adds the client to the list
            splitter.addClient(target, number);
        }
        else{
            target.write("Match ID is not correctly formatted");
        }
    });
});

// Listening for any problems with the server
server.on('error', function(error) {
  console.log("Error listening to the server!", error.message);
});

server.listen(serverPort, serverHost);

拆分器代码(添加客户端和发送数据):

var gameids = {1337:[]}

function addClient(client, gameID){
    if(matchExists(gameID)){
        console.log("Client", client.remoteAddress, "begun watching gameID", gameID,"\n");
        var id = gameids[gameID].push(client);
    }
    else{
        client.write("A match with the given ID does not exists");
    }
}

function sendData(data, gameID){
    if(gameids[gameID].length > 0){
        for(i = 0; i < gameids[gameID].length;i++){
            console.log(gameids[gameID][i]);
            if(gameids[gameID][i].writable){
                console.log("Sent data");
                gameids[gameID][i].write(data);
            }
        }
    }
}

从我的主脚本调用函数发送数据,该脚本只接收来自另一台服务器的输入,然后将其发送给所有正在观看的客户端。

0 个答案:

没有答案