Lance-gg 游戏 socket.io 无法在数字海洋上加载资源
Lance-gg game socket.io failed to load resource on digital ocean
我的 lance-gg 游戏在本地主机上运行,但现在我已尝试在数字海洋上部署该站点似乎正在托管,但我无法连接 socket.io。客户端浏览器中的错误是:
[Error] Failed to load resource: The request timed out. (socket.io, line 0) http://144.126.196.39:3001/socket.io/?EIO=3&transport=polling&t=NOU8Lc-
服务器代码是:
import path from 'path';
import express from 'express';
import socketIO from 'socket.io';
import { Lib, ServerEngine, GameEngine } from 'lance-gg';
// define routes and socket
const server = express();
server.get('/', (req, res) => { res.sendFile(path.join(__dirname, '../dist/index.html')); });
server.use('/', express.static(path.join(__dirname, '../dist/')));
let requestHandler = server.listen(3001);
const io = socketIO(requestHandler);
// Game Instances
const gameEngine = new GameEngine({ traceLevel: Lib.Trace.TRACE_NONE });
const serverEngine = new ServerEngine(io, gameEngine, { debug: {}, updateRate: 12 });
serverEngine.start();
客户端代码为:
import { Renderer, GameEngine, ClientEngine } from 'lance-gg';
const options = {
delayInputCount: 3,
scheduler: 'render-schedule',
syncOptions: {
sync: 'extrapolate',
remoteObjBending: 0.8,
bendingIncrements: 12
},
serverURL: 'http://144.126.196.39:3001'
};
// create a client engine and a game engine
const gameEngine = new GameEngine(options);
const clientEngine = new ClientEngine(gameEngine, options, Renderer);
document.addEventListener('DOMContentLoaded', (e) => clientEngine.start());
我知道数字海洋中的 nodeJS 入门模板使用 Nginx,所以我确保使用端口 3001 重定向到我的应用程序。
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/moon-game-2;
index index.html index.htm index.nginx-debian.html;
server_name hellonode;
location ^~ /assets/ {
gzip_static on;
expires 12h;
add_header Cache-Control public;
}
location / {
proxy_http_version 1.1;
proxy_cache_bypass $http_upgrade;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://localhost:3001;
}
}
我怎样才能让我的 socket.io 也连接到我的 lance-gg 服务器?
没关系,解决了我在客户端代码中的问题。显然在云环境中,我不需要像在本地主机上那样指定端口 3001。
// ...
import { USE_CLOUD_SERVER } from './constants';
const options = {
// ...
// The cloud server is set up with Nginx to redirect to the right port.
serverURL: USE_CLOUD_SERVER ? 'http://144.126.196.39' : 'http://localhost:3001'
};
// ...
我的 lance-gg 游戏在本地主机上运行,但现在我已尝试在数字海洋上部署该站点似乎正在托管,但我无法连接 socket.io。客户端浏览器中的错误是:
[Error] Failed to load resource: The request timed out. (socket.io, line 0) http://144.126.196.39:3001/socket.io/?EIO=3&transport=polling&t=NOU8Lc-
服务器代码是:
import path from 'path';
import express from 'express';
import socketIO from 'socket.io';
import { Lib, ServerEngine, GameEngine } from 'lance-gg';
// define routes and socket
const server = express();
server.get('/', (req, res) => { res.sendFile(path.join(__dirname, '../dist/index.html')); });
server.use('/', express.static(path.join(__dirname, '../dist/')));
let requestHandler = server.listen(3001);
const io = socketIO(requestHandler);
// Game Instances
const gameEngine = new GameEngine({ traceLevel: Lib.Trace.TRACE_NONE });
const serverEngine = new ServerEngine(io, gameEngine, { debug: {}, updateRate: 12 });
serverEngine.start();
客户端代码为:
import { Renderer, GameEngine, ClientEngine } from 'lance-gg';
const options = {
delayInputCount: 3,
scheduler: 'render-schedule',
syncOptions: {
sync: 'extrapolate',
remoteObjBending: 0.8,
bendingIncrements: 12
},
serverURL: 'http://144.126.196.39:3001'
};
// create a client engine and a game engine
const gameEngine = new GameEngine(options);
const clientEngine = new ClientEngine(gameEngine, options, Renderer);
document.addEventListener('DOMContentLoaded', (e) => clientEngine.start());
我知道数字海洋中的 nodeJS 入门模板使用 Nginx,所以我确保使用端口 3001 重定向到我的应用程序。
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/moon-game-2;
index index.html index.htm index.nginx-debian.html;
server_name hellonode;
location ^~ /assets/ {
gzip_static on;
expires 12h;
add_header Cache-Control public;
}
location / {
proxy_http_version 1.1;
proxy_cache_bypass $http_upgrade;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://localhost:3001;
}
}
我怎样才能让我的 socket.io 也连接到我的 lance-gg 服务器?
没关系,解决了我在客户端代码中的问题。显然在云环境中,我不需要像在本地主机上那样指定端口 3001。
// ...
import { USE_CLOUD_SERVER } from './constants';
const options = {
// ...
// The cloud server is set up with Nginx to redirect to the right port.
serverURL: USE_CLOUD_SERVER ? 'http://144.126.196.39' : 'http://localhost:3001'
};
// ...