如何我们app.post事件(从express)写一个消息与socket.write客户端



我试图从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');

相关内容

最新更新