使用js向本机其他端口发送数据,并接受返回数据
在JavaScript中,可以使用WebSocket或HTTP请求(例如使用fetch
API)来向本机其他端口发送数据并接收返回数据。以下是详细步骤和示例。
1. 使用WebSocket
WebSocket提供了一个持久的连接,适合实时通信。
a. 创建WebSocket服务器
可以使用Node.js创建一个简单的WebSocket服务器:
javascript// server.js
const WebSocket = require('ws');
const server = new WebSocket.Server({ port: 8080 });
server.on('connection', (socket) => {
console.log('Client connected');
socket.on('message', (message) => {
console.log(`Received: ${message}`);
// Echo the message back to the client
socket.send(`Server received: ${message}`);
});
});
运行上述代码后,WebSocket服务器将在8080端口监听。
b. 客户端JavaScript代码
在客户端使用WebSocket连接服务器并发送数据:
html<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>WebSocket Client</title>
</head>
<body>
<script>
const socket = new WebSocket('ws://localhost:8080');
socket.onopen = () => {
console.log('Connected to server');
socket.send('Hello, Server!');
};
socket.onmessage = (event) => {
console.log(`Received from server: ${event.data}`);
};
socket.onerror = (error) => {
console.error(`WebSocket error: ${error}`);
};
</script>
</body>
</html>
2. 使用HTTP请求
如果不需要实时通信,可以使用HTTP请求(如fetch
API)进行数据交互。
a. 创建HTTP服务器
可以使用Node.js创建一个简单的HTTP服务器:
javascript// server.js
const http = require('http');
const server = http.createServer((req, res) => {
let body = '';
req.on('data', chunk => {
body += chunk.toString(); // 将Buffer转为字符串
});
req.on('end', () => {
console.log(`Received: ${body}`);
res.end(`Server received: ${body}`);
});
});
server.listen(8080, () => {
console.log('Server running on port 8080');
});
b. 客户端JavaScript代码
使用fetch
API向服务器发送数据并接收响应:
html<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>HTTP Client</title>
</head>
<body>
<script>
fetch('http://localhost:8080', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ message: 'Hello, Server!' })
})
.then(response => response.text())
.then(data => {
console.log(`Received from server: ${data}`);
})
.catch(error => {
console.error('Error:', error);
});
</script>
</body>
</html>
3. 总结
在JavaScript中,可以使用WebSocket进行实时双向通信,或者使用HTTP请求(如fetch
API)进行简单的数据交互。WebSocket适合需要持续连接的应用,而HTTP请求适合一次性的请求/响应交互。无论使用哪种方法,均可以有效地在本机不同端口之间发送和接收数据。