[英]Socket.io does not send data between node.js and HTML script with a radio button
我正在嘗試與socket.io通信node.js和HTML腳本。 我正在嘗試通過單選按鈕選擇某個值時,socket.io將此值發送到node.js,然后返回控制台。 我的問題是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>
您是否需要打開此Web套接字? 目前,您擁有的AJAX通話更適合。 您可以使用普通請求,使用express的響應方法來處理此問題。
您可以使用一個簡單的express get處理程序:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.