我试图从html表单的输入字段发送消息到连接到服务器的所有客户端,当其中一个客户端在输入字段(文本框)中发布一些东西。我想用插座。write函数,因为我有一个连接到服务器的原始TCP客户端。我试图使用Express库与Post事件,因为我想要那种行为,但不能使用套接字,例如socket.write
函数内部的app.post
函数。
以下是我目前在服务器端的内容:
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
var net = require('net');
var server = net.createServer(function (socket) {
socket.write(' + req.body.name + ');
socket.pipe(socket);
});
app.get('/', function(req, res){
res.sendfile('index.html');
});
app.post('/myaction', function(req, res) {
res.send('You sent the name "' + req.body.name + '".');
//How to do this here??
server.socket.write(' + req.body.name + ')
socket.end();
});
app.listen(3000, function() {
console.log('Server running at http://127.0.0.1:3000/');
});
//Thought of using a different server port for the raw TCP device
server.listen(2000, '127.0.0.1');
和客户端的html表单:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Form</title>
</head>
<body>
<div id="contact">
<h1>Send an email</h1>
<form action="http://127.0.0.1:3000/myaction" method="post">
<fieldset>
<label for="name">Name:</label>
<input type="text" id="name" name="name" placeholder="Your name" />
<label for="email">Surname:</label>
<input type="text" id="surname" placeholder="Your surname" />
<input type="submit" value="Send" />
</fieldset>
</form>
</div>
</body>
</html>
是否有办法在app.post event
上做socket.write
。输入字段中的名称可以使用socket.write
发送吗?
对不起,如果我错过了什么,我是新的这种编程。
您需要跟踪您的TCP客户机。试试这个:
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
var net = require('net');
// All your clients
var clients = [];
var server = net.createServer(function (socket) {
// Track the client
clients.push(socket);
socket.on('data', function (data) {
// Handle data coming from clients here
});
});
app.get('/', function(req, res){
res.sendfile('index.html');
});
app.post('/myaction', function(req, res) {
res.send('You sent the name "' + req.body.name + '".');
broadcast('New name:' + req.body.name);
});
// Here's where you send data to all clients
function broadcast(msg) {
clients.forEach(function (client) {
client.write(msg);
});
}
app.listen(3000, function() {
console.log('Server running at http://127.0.0.1:3000/');
});
//Thought of using a different server port for the raw TCP device
server.listen(2000, '127.0.0.1');