2015-01-02 1 views
0

socket.io와 node.js 및 HTML 스크립트를 통신하려고합니다. 라디오 버튼으로 값을 선택하면 socket.io가이 값을 node.js로 보낸 다음 콘솔로 돌아갑니다. 내 문제는 socket.io가 아무 것도 보내지 않는다는 것이다. 그것이 입력되면 html로 알람을 쓰고 있기 때문에 소켓 함수를 입력하지 않는다는 것을 알고 있습니다.Socket.io는 라디오 버튼을 사용하여 node.js와 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) 
 
\t 
 
\t //Send the value of the radio button  
 
\t var socket = io.connect("http://localhost:5000"); //client connection 
 
\t socket.on("connect", function(){ 
 
     alert("connected!") 
 
     socket.emit("sendVar", x); 
 

 
     }); 
 

 
     
 
     break; 
 
    } 
 
} 
 

 
} 
 

 
</script> 
 

 
</html>

+0

개념적으로 웹 소켓은 가장 유용합니다. 라디오 버튼을 변경했을 때 클라이언트에 데이터를 보내고 싶다면 WebSocket 연결을 한 번만 사용하는 것이 아니라 간단한 ajax 호출을 사용하는 것이 좋습니다. – jfriend00

답변

0

당신이 가지고 특정 필요가 수행

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 스크립트가 이것이다 :
Node.js를 코드는 이것이다 이 웹 소켓이 열렸습니까? 현재 AJAX 호출이 더 적합 할 것입니다. 당신은 정상적인 요청, 익스프레스를 사용하여 응답 방법으로 이것을 처리 할 수 ​​있습니다.

당신은 간단한 표현 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

+0

감사합니다. 문제를 해결할 수있었습니다! – Pepe

관련 문제