尝试使用套接字从 javascript 服务器向客户端发送字符串消息;当按下 HTML 按钮时
Trying to send a string message from javascript server to client using sockets; when pressing HTML button
我是这个领域的新手,如果我不能很好地解释我的问题,请原谅我。
我实际上是在尝试发送字符串 "Hello, I connected to the port" 到我的 Javascript 客户端,只有当我按下 HTML 按钮。
出于测试目的:
我已经成功运行建立了客户端和服务器Javascript套接字连接,并且可以来回接收数据。但是,当我尝试将此 link 发送到我的 html 页面时,我无法连接它们并发送数据。
CLIENT.JS:
const net = require('net');
const client = net.createConnection({ port: 9898 }, () => {
console.log('CLIENT: I connected');
client.write('CLIENT: Hello this is client!');
});
client.on('data', (data) => {
console.log(data.toString());
client.end();
});
client.on('end', () => {
console.log('CLIENT: I disconnected from the server.');
});
SERVER.JS
const net = require('net');
const server = net.createServer((socket) => {
socket.on('data', (data) => {
console.log(data.toString());
});
socket.write('SERVER: Hello! \n');
socket.end('SERVER: Closing connection now \n');
}).on('error', (err) => {
console.error(err);
});
server.listen(9898, () => {
console.log('opened server on', server.address().port);
});
如果您保存上面的代码并 运行 它们使用以下行:
node server.js
node client.js
你会发现他们之间的消息传递非常好。
当我尝试 运行 我的 html 页面(使用端口 8083 上的 node.JS 提供)
(我使用 npx http-server --cors 服务器 HTML 页面)
我尝试的一种方法是将 client.js 中的代码放入一个函数中,然后在我的 html 按钮中调用它:
<input type = "button" onclick = "outputData()" value = "Display">
(outputData是客户端服务器中包含代码的函数)
我不确定它是否可以完成,但我想基本上从我的 HTML 开始我的 server.js页面,当单击按钮时,它可以开始发送数据。我想在终端上 运行 “节点 client.js” 并看到消息正在通过,因为 server.js 会从我的网页 开始
如有任何建议,我们将不胜感激。感谢您抽出宝贵时间。
有关 socket.io 图书馆的信息,https://socket.io/docs/v3/client-api/index.html
正在发送消息index.html
<html>
<body>
<input type="button" onclick="javascript:sendMessage()" value="Click here"/>
<script>
const sendMessage = () => {
var new_message = {message: "this is my message"}
socket.emit('new_message', new_message);
}
</script>
<script src="/socket.io/socket.io.js"></script>
<script>
const socket = io("http://localhost:8080");
</script>
</body>
</html>
server.js
socket.on('new_message', (data) => {
var New_Details = {
message: data.message
};
socket.broadcast.emit('update_message', New_Details);
console.log(data.username + ' just wrote ' + data.message);
});
我设法通过使用 Websockets 解决了这个问题。我的网络服务器充当客户端,我将 server.js 调整为以下内容:
SERVER.JS
const WebSocket = require("ws");
const wss = new WebSocket.Server({ port: 9898 });
wss.on("connection", ws => {
console.log("New client connected!");
ws.on("message", data => {
console.log(`Client has sent us: ${data}`);
ws.send(data.toUpperCase());
});
ws.on("close", () => {
console.log("Client has disconnected!");
});
});
HTML
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/assets/dcode.css">
<link rel="shortcut icon" href="/assets/favicon.ico" type="image/x-icon">
<title>WebSockets</title>
</head>
<body>
<script>
const ws = new WebSocket("ws://localhost:9898");
ws.addEventListener("open", () => {
console.log("We are connected!");
ws.send("Hey, how's it going?");
});
ws.addEventListener("message", ({ data }) => {
console.log(data);
});
</script>
</body>
</html>
我是这个领域的新手,如果我不能很好地解释我的问题,请原谅我。
我实际上是在尝试发送字符串 "Hello, I connected to the port" 到我的 Javascript 客户端,只有当我按下 HTML 按钮。
出于测试目的:
我已经成功运行建立了客户端和服务器Javascript套接字连接,并且可以来回接收数据。但是,当我尝试将此 link 发送到我的 html 页面时,我无法连接它们并发送数据。
CLIENT.JS:
const net = require('net');
const client = net.createConnection({ port: 9898 }, () => {
console.log('CLIENT: I connected');
client.write('CLIENT: Hello this is client!');
});
client.on('data', (data) => {
console.log(data.toString());
client.end();
});
client.on('end', () => {
console.log('CLIENT: I disconnected from the server.');
});
SERVER.JS
const net = require('net');
const server = net.createServer((socket) => {
socket.on('data', (data) => {
console.log(data.toString());
});
socket.write('SERVER: Hello! \n');
socket.end('SERVER: Closing connection now \n');
}).on('error', (err) => {
console.error(err);
});
server.listen(9898, () => {
console.log('opened server on', server.address().port);
});
如果您保存上面的代码并 运行 它们使用以下行:
node server.js
node client.js
你会发现他们之间的消息传递非常好。
当我尝试 运行 我的 html 页面(使用端口 8083 上的 node.JS 提供)
(我使用 npx http-server --cors 服务器 HTML 页面)
我尝试的一种方法是将 client.js 中的代码放入一个函数中,然后在我的 html 按钮中调用它:
<input type = "button" onclick = "outputData()" value = "Display">
(outputData是客户端服务器中包含代码的函数)
我不确定它是否可以完成,但我想基本上从我的 HTML 开始我的 server.js页面,当单击按钮时,它可以开始发送数据。我想在终端上 运行 “节点 client.js” 并看到消息正在通过,因为 server.js 会从我的网页 开始
如有任何建议,我们将不胜感激。感谢您抽出宝贵时间。
有关 socket.io 图书馆的信息,https://socket.io/docs/v3/client-api/index.html
正在发送消息index.html
<html>
<body>
<input type="button" onclick="javascript:sendMessage()" value="Click here"/>
<script>
const sendMessage = () => {
var new_message = {message: "this is my message"}
socket.emit('new_message', new_message);
}
</script>
<script src="/socket.io/socket.io.js"></script>
<script>
const socket = io("http://localhost:8080");
</script>
</body>
</html>
server.js
socket.on('new_message', (data) => {
var New_Details = {
message: data.message
};
socket.broadcast.emit('update_message', New_Details);
console.log(data.username + ' just wrote ' + data.message);
});
我设法通过使用 Websockets 解决了这个问题。我的网络服务器充当客户端,我将 server.js 调整为以下内容:
SERVER.JS
const WebSocket = require("ws");
const wss = new WebSocket.Server({ port: 9898 });
wss.on("connection", ws => {
console.log("New client connected!");
ws.on("message", data => {
console.log(`Client has sent us: ${data}`);
ws.send(data.toUpperCase());
});
ws.on("close", () => {
console.log("Client has disconnected!");
});
});
HTML
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/assets/dcode.css">
<link rel="shortcut icon" href="/assets/favicon.ico" type="image/x-icon">
<title>WebSockets</title>
</head>
<body>
<script>
const ws = new WebSocket("ws://localhost:9898");
ws.addEventListener("open", () => {
console.log("We are connected!");
ws.send("Hey, how's it going?");
});
ws.addEventListener("message", ({ data }) => {
console.log(data);
});
</script>
</body>
</html>