使用WebSockets(ws)连接到Rcon

时间:2019-07-15 01:00:56

标签: node.js websocket electron remote-connection ws

在我的electronicjs项目中的nodejs中使用Web套接字是我的新手。我的目标是连接到服务器正在运行的连接,我已经正确设置了所有设置,端口,密码和localhost,所有这些似乎都可以使用另一个软件包来工作。但是当我尝试自己创建它时,似乎无法使它正常工作。

const WebSocket = require('ws');

serverip = 'localhost';
serverport = 25575;
serverpass = 'password';
const ws = new WebSocket('ws://' + serverip + ':' + serverport + '/' + serverpass + '/');

ws.on('open', function open() {
    ws.send('/kick Player');
});

ws.on('message', function incoming(data) {
    console.log(data);
});

ws.on('close', function close() {
    console.log('disconnected');
});

以上是我到目前为止所拥有的,我要连接的服务器的控制台说它正在从我的PC获得连接,但除此之外没有中继任何信息。

Server Output:
Rcon connection from: /127.0.0.1

这是我在electronjs控制台中遇到的错误:

Uncaught Error: socket hang up
    at createHangUpError (_http_client.js:334)
    at Socket.socketOnEnd (_http_client.js:435)
    at Socket.emit (events.js:199)
    at endReadableNT (_stream_readable.js:1141)
    at processTicksAndRejections (internal/process/task_queues.js:81)

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

当我自己尝试 WebSocket 一个简单的 Source RCON 时,遇到了一些问题。幸运的是,我下面的代码编译得很好。

var serverip = 'RconHost';
var serverport = 28016;
var serverpass = 'RconPassword';
    
const ws = new WebSocket('ws://' + serverip + ':' + serverport + '/' + serverpass);
console.log(ws);
    
ws.onopen = function(event) {
    console.log("WebSocket is onopen now.");
};
    
ws.onmessage = function(event) {
    console.log("WebSocket is onmessage now.");
};
    
ws.onclose = function(event) {
    console.log("WebSocket is onclose now.");
};
<块引用>

未捕获的错误:套接字挂断 在 createHangUpError (_http_client.js:334) 在 Socket.socketOnEnd (_http_client.js:435) 在 Socket.emit (events.js:199) 在 endReadableNT (_stream_readable.js:1141) 在 processTicksAndRejections (internal/process/task_queues.js:81)

... 看起来像一个无法访问的主机。 URL 中的尾部正斜杠有问题。

答案 1 :(得分:0)

ws:// => wss://

const ws = new WebSocket('wss://' + serverip + ':' + serverport + '/' + serverpass + '/');

const ws = new WebSocket('ws://' + serverip + ':' + serverport + '/' + serverpass + '/');