Socket.io 不使用单选按钮在 node.js 和 HTML 脚本之间发送数据

Socket.io does not send data between node.js and HTML script with a radio button

我正在尝试将 node.js 和 HTML 脚本与 socket.io 进行通信。我正在尝试,当我使用单选按钮选择某个值时,socket.io 将此值发送到 node.js,然后 return 发送到控制台。我的问题是 socket.io 没有发送任何东西。我知道它不会进入套接字功能,因为如果它进入,我会在 html 中写一个警报,但什么也没有。
Node.js代码是这样的:

var express = require("express");
var http = require("http");
var socketIO = require("socket.io");

var app = express();
app.get("/", function(req, res){
    res.sendfile("./toggle?.html");
});
 
var server = http.createServer(app);

var io = socketIO.listen(server, {log: false});
io.sockets.on("connection", function(socket){
    
    socket.on("sendVar", function(value){
   
   console.log(value)
     
    });
});

server.listen(5000);

HTML 脚本是这样的:

 <html> 
<input type="radio" name="group1" value=1> ON<br>
<input type="radio" name="group1" value=0 checked> OFF<br>
<INPUT TYPE="Button" VALUE="Proceed" onClick="showBoxes(this.form)">

<script>
var radios = document.getElementsByName('group1');
function showBoxes(frm){
for (var i = 0, length = radios.length; i < length; i++) {
    if (radios[i].checked) {
        
        var x=radios[i].value;
           alert(radios[i].value)
  
  //Send the value of the radio button      
  var socket = io.connect("http://localhost:5000"); //client connection
  socket.on("connect", function(){ 
         alert("connected!")
         socket.emit("sendVar", x);

        });

        
        break;
    }
}

}

</script>

</html>

您是否特别需要打开此网络套接字?目前你有一个 AJAX 电话会更合适。您可以通过使用 express 的正常请求、响应方法来处理此问题。

您可以使用简单的快速获取处理程序:

app.get('/', function(req, res){
  res.send('hello world');
});

或者您可以使用路由器:

var app = express();

app.route('/events')
.all(function(req, res, next) {
  // runs for all HTTP verbs first
  // think of it as route specific middleware!
})
.get(function(req, res, next) {
  res.json(...);
})
.post(function(req, res, next) {
  // maybe add a new event...
})

每种解决方案都比套接字更适合。

来源:http://expressjs.com/api.html