纯Node.js服务器上的Unity3D Webplayer扩展(Unity3D Webplayer extension on pure Node.js server)

编程入门 行业动态 更新时间:2024-10-25 05:13:50
纯Node.js服务器上的Unity3D Webplayer扩展(Unity3D Webplayer extension on pure Node.js server)

我无法在node.js服务器上运行Unity3D应用程序。 它说“无法下载数据文件”。 我认为这是因为MIME类型。 这是我的代码。 我是Javascript和Node.js的新手,对不起。

Server.js:

var http = require("http"); var url = require('url'); var fs = require('fs'); var io = require('socket.io'); var five = require("johnny-five"),board, led, button; board = new five.Board(); board.on("ready", function() { button = new five.Button(2); }); var server = http.createServer(function(request, response){ console.log('Connection'); var path = url.parse(request.url).pathname; switch(path){ case '/': response.writeHead(200, {'Content-Type': 'text/html'}); response.write('hello world', function(err) { response.end(); }); break; case '/index.html': fs.readFile(__dirname + path, function(error, data){ if (error){ response.writeHead(404); response.write("opps this doesn't exist - 404"); } else{ response.writeHead(200, {"Content-Type": "text/html"}); response.write(data, function(err) { response.end(); }); } }); break; default: response.writeHead(404); response.write("opps this doesn't exist - 404", function(err) { response.end(); }); break; } }); server.listen(8001); var ios = io.listen(server); ios.listen(server); ios.sockets.on('connection', function (socket) { if (board.isReady) { button.on("down",function(){ console.log("down"); socket.emit('news', { hello: 'world' }); }); socket.on('toggleLed', function(data){ led = new five.Led(13); led.strobe(1000); }); setInterval(function(){ socket.emit('date', {'date': new Date()}); }); socket.on('client_data', function(data){ process.stdout.write(data.letter); }); } });

index.html的:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Unity Web Player | UnityArduino</title> <script type='text/javascript' src='https://ssl-webplayer.unity3d.com/download_webplayer-3.x/3.0/uo/jquery.min.js'></script> <script type="text/javascript"> <!-- var unityObjectUrl = "http://webplayer.unity3d.com/download_webplayer-3.x/3.0/uo/UnityObject2.js"; if (document.location.protocol == 'https:') unityObjectUrl = unityObjectUrl.replace("http://", "https://ssl-"); document.write('<script type="text\/javascript" src="' + unityObjectUrl + '"><\/script>'); --> </script> <script type="text/javascript"> <!-- var config = { width: 960, height: 600, params: { enableDebugging:"0" } }; var u = new UnityObject2(config); jQuery(function() { var $missingScreen = jQuery("#unityPlayer").find(".missing"); var $brokenScreen = jQuery("#unityPlayer").find(".broken"); $missingScreen.hide(); $brokenScreen.hide(); u.observeProgress(function (progress) { switch(progress.pluginStatus) { case "broken": $brokenScreen.find("a").click(function (e) { e.stopPropagation(); e.preventDefault(); u.installPlugin(); return false; }); $brokenScreen.show(); break; case "missing": $missingScreen.find("a").click(function (e) { e.stopPropagation(); e.preventDefault(); u.installPlugin(); return false; }); $missingScreen.show(); break; case "installed": $missingScreen.remove(); break; case "first": break; } }); u.initPlugin(jQuery("#unityPlayer")[0], "ArduinoWebPlayer.unity3d"); }); --> </script> <style type="text/css"> <!-- body { font-family: Helvetica, Verdana, Arial, sans-serif; background-color: white; color: black; text-align: center; } a:link, a:visited { color: #000; } a:active, a:hover { color: #666; } p.header { font-size: small; } p.header span { font-weight: bold; } p.footer { font-size: x-small; } div.content { margin: auto; width: 960px; } div.broken, div.missing { margin: auto; position: relative; top: 50%; width: 193px; } div.broken a, div.missing a { height: 63px; position: relative; top: -31px; } div.broken img, div.missing img { border-width: 0px; } div.broken { display: none; } div#unityPlayer { cursor: default; height: 600px; width: 960px; } --> </style> </head> <body> <p class="header"><span>Unity Web Player | </span>UnityArduino</p> <div class="content"> <div id="unityPlayer"> <div class="missing"> <a href="http://unity3d.com/webplayer/" title="Unity Web Player. Install now!"> <img alt="Unity Web Player. Install now!" src="http://webplayer.unity3d.com/installation/getunity.png" width="193" height="63" /> </a> </div> <div class="broken"> <a href="http://unity3d.com/webplayer/" title="Unity Web Player. Install now! Restart your browser after install."> <img alt="Unity Web Player. Install now! Restart your browser after install." src="http://webplayer.unity3d.com/installation/getunityrestart.png" width="193" height="63" /> </a> </div> </div> </div> <p class="footer">&laquo; created with <a href="http://unity3d.com/unity/" title="Go to unity3d.com">Unity</a> &raquo;</p> </body> </html>

感谢您的帮助。

I can't run my Unity3D applications on my node.js server. It says "failed to download data file". I think it's because of MIME types. Here are my codes. I'm new to Javascript and Node.js, sorry for that.

Server.js:

var http = require("http"); var url = require('url'); var fs = require('fs'); var io = require('socket.io'); var five = require("johnny-five"),board, led, button; board = new five.Board(); board.on("ready", function() { button = new five.Button(2); }); var server = http.createServer(function(request, response){ console.log('Connection'); var path = url.parse(request.url).pathname; switch(path){ case '/': response.writeHead(200, {'Content-Type': 'text/html'}); response.write('hello world', function(err) { response.end(); }); break; case '/index.html': fs.readFile(__dirname + path, function(error, data){ if (error){ response.writeHead(404); response.write("opps this doesn't exist - 404"); } else{ response.writeHead(200, {"Content-Type": "text/html"}); response.write(data, function(err) { response.end(); }); } }); break; default: response.writeHead(404); response.write("opps this doesn't exist - 404", function(err) { response.end(); }); break; } }); server.listen(8001); var ios = io.listen(server); ios.listen(server); ios.sockets.on('connection', function (socket) { if (board.isReady) { button.on("down",function(){ console.log("down"); socket.emit('news', { hello: 'world' }); }); socket.on('toggleLed', function(data){ led = new five.Led(13); led.strobe(1000); }); setInterval(function(){ socket.emit('date', {'date': new Date()}); }); socket.on('client_data', function(data){ process.stdout.write(data.letter); }); } });

Index.html:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Unity Web Player | UnityArduino</title> <script type='text/javascript' src='https://ssl-webplayer.unity3d.com/download_webplayer-3.x/3.0/uo/jquery.min.js'></script> <script type="text/javascript"> <!-- var unityObjectUrl = "http://webplayer.unity3d.com/download_webplayer-3.x/3.0/uo/UnityObject2.js"; if (document.location.protocol == 'https:') unityObjectUrl = unityObjectUrl.replace("http://", "https://ssl-"); document.write('<script type="text\/javascript" src="' + unityObjectUrl + '"><\/script>'); --> </script> <script type="text/javascript"> <!-- var config = { width: 960, height: 600, params: { enableDebugging:"0" } }; var u = new UnityObject2(config); jQuery(function() { var $missingScreen = jQuery("#unityPlayer").find(".missing"); var $brokenScreen = jQuery("#unityPlayer").find(".broken"); $missingScreen.hide(); $brokenScreen.hide(); u.observeProgress(function (progress) { switch(progress.pluginStatus) { case "broken": $brokenScreen.find("a").click(function (e) { e.stopPropagation(); e.preventDefault(); u.installPlugin(); return false; }); $brokenScreen.show(); break; case "missing": $missingScreen.find("a").click(function (e) { e.stopPropagation(); e.preventDefault(); u.installPlugin(); return false; }); $missingScreen.show(); break; case "installed": $missingScreen.remove(); break; case "first": break; } }); u.initPlugin(jQuery("#unityPlayer")[0], "ArduinoWebPlayer.unity3d"); }); --> </script> <style type="text/css"> <!-- body { font-family: Helvetica, Verdana, Arial, sans-serif; background-color: white; color: black; text-align: center; } a:link, a:visited { color: #000; } a:active, a:hover { color: #666; } p.header { font-size: small; } p.header span { font-weight: bold; } p.footer { font-size: x-small; } div.content { margin: auto; width: 960px; } div.broken, div.missing { margin: auto; position: relative; top: 50%; width: 193px; } div.broken a, div.missing a { height: 63px; position: relative; top: -31px; } div.broken img, div.missing img { border-width: 0px; } div.broken { display: none; } div#unityPlayer { cursor: default; height: 600px; width: 960px; } --> </style> </head> <body> <p class="header"><span>Unity Web Player | </span>UnityArduino</p> <div class="content"> <div id="unityPlayer"> <div class="missing"> <a href="http://unity3d.com/webplayer/" title="Unity Web Player. Install now!"> <img alt="Unity Web Player. Install now!" src="http://webplayer.unity3d.com/installation/getunity.png" width="193" height="63" /> </a> </div> <div class="broken"> <a href="http://unity3d.com/webplayer/" title="Unity Web Player. Install now! Restart your browser after install."> <img alt="Unity Web Player. Install now! Restart your browser after install." src="http://webplayer.unity3d.com/installation/getunityrestart.png" width="193" height="63" /> </a> </div> </div> </div> <p class="footer">&laquo; created with <a href="http://unity3d.com/unity/" title="Go to unity3d.com">Unity</a> &raquo;</p> </body> </html>

Thank you for your help.

最满意答案

我发现这是因为这个服务器代码。

var server = http.createServer(function(request, response){ console.log('Connection'); var path = url.parse(request.url).pathname; switch(path){ case '/': response.writeHead(200, {'Content-Type': 'text/html'}); response.write('hello world', function(err) { response.end(); }); break; case '/index.html': fs.readFile(__dirname + path, function(error, data){ if (error){ response.writeHead(404); response.write("opps this doesn't exist - 404"); } else{ response.writeHead(200, {"Content-Type": "text/html"}); response.write(data, function(err) { response.end(); }); } }); break; default: response.writeHead(404); response.write("opps this doesn't exist - 404", function(err) { response.end(); }); break; } });

我按照这个代码找到了解决方案。

https://github.com/jwanga/node-static-http-server

I found that it is because of this server code.

var server = http.createServer(function(request, response){ console.log('Connection'); var path = url.parse(request.url).pathname; switch(path){ case '/': response.writeHead(200, {'Content-Type': 'text/html'}); response.write('hello world', function(err) { response.end(); }); break; case '/index.html': fs.readFile(__dirname + path, function(error, data){ if (error){ response.writeHead(404); response.write("opps this doesn't exist - 404"); } else{ response.writeHead(200, {"Content-Type": "text/html"}); response.write(data, function(err) { response.end(); }); } }); break; default: response.writeHead(404); response.write("opps this doesn't exist - 404", function(err) { response.end(); }); break; } });

I followed this code and found the solution.

https://github.com/jwanga/node-static-http-server

更多推荐

本文发布于:2023-07-29 14:12:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1316785.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:器上   Unity3D   Node   js   pure

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!