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...
})
每种解决方案都比套接字更适合。
我正在尝试将 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...
})
每种解决方案都比套接字更适合。