を使用して、クライアントにファイルを送信するには、ここで見つける:http://rawkes.com/articles/creating-a-real-time-multiplayer-game-with-websockets-and-node.htmlのNode.js - 私はNode.jsのに非常に新しいですし、ゲーム作りのチュートリアルを追っているSENDFILE
私はで詳述したゲームを改善しようとしていますチュートリアルでは、すべての必要なファイルをクライアントに送信します。
var util = require("util"),
Player = require("./Player").Player;
var app = require('express')();
var http = require('http');
var httpServer = http.createServer(app);
httpServer.listen(8000)
var io = require('socket.io');
var socket,
players;
app.get('/', function(req, res){
res.sendFile(__dirname + '/public/index.html');
res.sendFile(__dirname + '/public/js/game.js');
res.sendFile(__dirname + '/public/js/Keys.js');
res.sendFile(__dirname + '/public/js/Player.js');
res.sendFile(__dirname + '/public/js/requestAnimationFrame.js');
res.sendFile(__dirname + '/public/style/game.css');
res.sendFile(__dirname + '/public/style/reset.css');
});
function init() {
players = [];
socket = io.listen(httpServer)
//streamline
socket.configure(function() {
socket.set("transports", ["websocket"]);
socket.set("log level", 2);
});
setEventHandlers()
}
init()
私はクライアントとして私のサーバーに接続すると、このエラーはサーバ端末にスローされ、
_http_outgoing.js:344
throw new Error('Can\'t set headers after they are sent.');
^
Error: Can't set headers after they are sent.
at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:344:11)
at Array.write (/Users/Mark/node_modules/express/node_modules/finalhandler/index.js:164:9)
at listener (/Users/Mark/node_modules/express/node_modules/on-finished/index.js:169:15)
at onFinish (/Users/Mark/node_modules/express/node_modules/on-finished/index.js:100:5)
at callback (/Users/Mark/node_modules/express/node_modules/on-finished/node_modules/ee-first/index.js:55:10)
at IncomingMessage.onevent (/Users/Mark/node_modules/express/node_modules/on-finished/node_modules/ee-first/index.js:93:5)
at emitNone (events.js:67:13)
at IncomingMessage.emit (events.js:166:7)
at endReadableNT (_stream_readable.js:921:12)
at nextTickCallbackWith2Args (node.js:442:9)
ここでは、問題のコードです
このコードを動作させるための提案は非常に高く評価されます。私は解決策が明らかだと確信していますが、私が見つけることができるものは何も動作していないようです。
応答オブジェクトに対して 'setHeader'を呼び出しましたか? – Rayon
1つの要求で1つのファイルが送信されます。 'res.sendFile()'を複数回呼び出すことはできません。クライアントは他のファイルを要求し、エクスプレスアプリでそれらのルートを作成するので、クライアントが要求すると、要求に合った適切なファイルが送信されます。 'express.static()'を使うと、1行のコードですべての静的ファイルのルート処理を設定することができます。 – jfriend00
@ jfriend00答えとして投稿できますか?それは正しい答えです。 –