我一直在尝试通过搜索此论坛和官方文档来找到解决问题的方法,以解决此问题,但是我尝试执行的所有操作均会导致移动问题或无济于事。我确定我的设置的某些部分是错误的,这就是为什么我无法再连接到nodejs服务器的原因。昨天该脚本在不同的设置中工作,今天我很愚蠢,无法尝试对其进行切换以修复一个简单的错误,该错误导致该脚本每秒钟左右从单个客户端记录一个新的套接字。我一直在把它弄乱,以至于它不再连接了,现在我无法撤消到原来的状态。
为了提供一些有关后端外观的设置知识(如果有帮助的话),我所有的节点模块都位于我的公共html文件夹的node_modules子文件夹中,这也是我唯一的app.js脚本所在的位置。我的app.js脚本设置如下:
var express = require('express'),
http = require('http');
var app = express();
var server = http.createServer(app);
var io = require('socket.io').listen(server);
server.listen(8002);
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.php');
});
console.log(`Server running at http://mywebsiteip:8002/`);
io.on('connection', function(socket){
console.log('Client connected');
client.on('join', function(data) {
console.log(data);
});
});
io.on('disconnect', function(data){
console.log('Client disconnected');
});
除了前5行已从var多次转换为const并进行了广泛的重新排列外,我几乎不理会这行,但除此之外,它们与工作时的状态几乎相同。
下一批代码来自客户端,除了实际的socketio脚本链接和以下的Socket io连接脚本(如下所示)外,其余内容几乎相同。
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.3.0/socket.io.js" integrity="sha256-bQmrZe4yPnQrLTY+1gYylfNMBuGfnT/HKsCGX+9Xuqo=" crossorigin="anonymous"></script>
<script>
const io = require("socket.io-client");
const socket = io.connect("https://mywebsiteip:8002", { secure: true, reconnection: true, rejectUnauthorized: false });
socket.on('connect', function(data) {
socket.emit('join', 'Hello World from client');
});
</script>
我的理解是,当用户连接到服务器时,这应该只输出一条控制台行,但是通过bash运行app.js文件只会记录服务器正在运行的行。这是我进行过任何编辑的仅有的两个文件,我见过一些其他包含另一个server.js文件或其他内容的文件,但是我见过的一些没有,所以我将其保留在此设置中迄今。在过去的几个小时中,我一直在脑海中ash撞,试图解决此问题,但似乎没有任何解决办法。
好的,我们这里有一些问题,请调整所有问题以使您的代码正常运行:
1-在服务器端,您这样写:
io.on('connection', function(socket){
console.log('Client connected');
client.on('join', function(data) {
console.log(data);
});
});
在这段代码的第一行中,将套接字一词用作参数,但在第三行中,您通过client,这两个词应相同,以便代码可以工作。
也许通过执行此更改,您可能已经解决了问题,但是还可以解决其他问题,例如:
2-在客户端方面:客户端socket.io脚本的第一行代码是这样写的
const io = require("socket.io-client");
您不应该在客户端代码上使用require,因为它不是纯JavaScript命令。基本上,它只能在NodeJ上运行,如果这样使用它可能会返回错误。
3-您似乎在NodeJs项目上使用的是php文件,请将其更改为.html文件
我已经在本地计算机上尝试了这些更改,效果很好。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句