问题描述
我是 node.js 和 socket.io 的新手。他们让我将 connect4 游戏(我用 Javascript、node.js、express、socket.io、jquery 制作)分成 2 个独立的应用程序(服务器应用程序和客户端应用程序)。
这两个App的node.js必须相互连接。换句话说,我需要将客户端应用程序的节点应用程序连接到服务器应用程序节点应用程序的端口。 (他们说我应该有属于 2 个应用程序的 2 个工作端口)
(在拆分应用程序之前,它工作正常;当客户提供房间的网址时,他可以和他的朋友一起玩,游戏正常开始和重新开始,但现在一切都变得混乱了。)
当客户端和服务器在同一个应用程序中时,Connect 4 游戏正在运行,但现在我不能做这样的事情 "
app.get('/:room([A-Za-z0-9]{9})',function(req,res) //app.set('view engine','html'); //res.status(200).sendFile(__dirname+'./index.html');
"
但我的主要问题是我无法从客户端应用 nodejs 连接到服务器应用 nodejs。
服务器应用程序的代码部分;
const express = require('express');
const cors = require('cors');
const app = express();
const http = require('http').createServer(app);
const io = require('socket.io')(http,{
cors: {
origin: '*',methods: ['GET','POST'],},serveClient: false,pingInterval: 5000,});
const port = process.env.PORT || 4000;
const { randomNumeric } = require('./utils.js');//I want random room key for later
// Todo: IF CORS DOES NOT WORK,TRY TO USE IT IN EXPRESS SERVER
app.use((req,res,next) => {
res.header('Access-Control-Allow-Origin','*');
res.header('Access-Control-Allow-Methods','GET,POST');
res.header('Access-Control-Allow-HEADERS','Content-Type');
});
io.listen(port,() => { //Its not working :(
console.log("çalışıyor");
console.log(`Server started at ${port}`);
});
和客户端应用 node.js 代码;
var express = require('express'),game_logic = require('./game_logic'),app = express(),server = require('http').createServer(app),port = Number(process.env.PORT || 3000);
server.listen(port);
console.log('Node.js web server port 3000 de çalıştı')
/*routing*/
app.use("/css",express.static(__dirname + '/css'));
app.use("/js",express.static(__dirname + '/js'));
app.use("/img",express.static(__dirname + '/img'));
app.get('/',res) {
res.sendFile(__dirname+'/index.html');
});
在客户端应用程序中,我有用于 socket.io 连接的 App.js
$(function(){
var socket = io.connect(),player = {},yc = $('.your_color'),oc = $('.opponent_color'),your_turn = false,url = window.location.href.split('/'),room = url[url.length-1];
之后我有连接 socket.io 的代码,比如 socket.on 和 socket.emit
当我运行这 2 个应用程序并打开 local3000 时,我只看到空游戏板什么也没发生, 你能帮我解决这个问题吗,我真的需要一些关于这个主题的链接。谢谢你
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)