Node.js socket.io服务器未侦听
我将node.js和socket.io用于一个简单的应用程序。我的浏览器正在从服务器接收数据,但服务器没有从客户端(浏览器)接收数据。可能是客户端\u数据不工作的事件侦听器。这是服务器:Node.js socket.io服务器未侦听,node.js,websocket,socket.io,Node.js,Websocket,Socket.io,我将node.js和socket.io用于一个简单的应用程序。我的浏览器正在从服务器接收数据,但服务器没有从客户端(浏览器)接收数据。可能是客户端\u数据不工作的事件侦听器。这是服务器: var http = require("http"); var url = require("url"); var io = require('socket.io'); function start(route) { function onRequest(request, response) {
var http = require("http");
var url = require("url");
var io = require('socket.io');
function start(route) {
function onRequest(request, response) {
var pathname = url.parse(request.url).pathname;
console.log("Request for " + pathname + " received.");
route(pathname, response);
}
var server = http.createServer(onRequest);
server.listen(8888);
var server_io = io.listen(server);
server_io.on('connection', function(socket){
//send data to client
setInterval(function(){
socket.emit('date', {'date': new Date()});
}, 1000);
});
//recieve client data
server_io.on('client_data', function(data){ //May be it is not listening
process.stdout.write(data.letter); // not working
//console.log(data.letter); not working
});
console.log("Server has started.");
}
exports.start = start;
客户端代码:
<html>
<head>
<script src="/socket.io/socket.io.js"></script>
</head>
<body>
<script>
var socket = io.connect();
socket.on('date', function(data){
document.getElementById("date").innerHTML = data.date;
});
function sendKey(e){
socket.emit('client_data', {'letter': String.fromCharCode(e.charCode)});
}
</script>
<div id="date">This is our socket.html file</div>
<textarea id="text" onKeyPress="sendKey(event)"></textarea>
</body>
</html>
var socket=io.connect();
socket.on('date',函数(数据){
document.getElementById(“日期”).innerHTML=data.date;
});
功能发送键(e){
emit('client_data',{'letter':String.fromCharCode(e.charCode)});
}
这是我们的socket.html文件
我的服务器代码有什么问题?服务器io只接收连接事件。从客户端发送的
client\u数据
事件由传递到连接
回调的socket
对象听到,而不是服务器io
对象听到
您需要使用socket.on(“client_data”,…)
并将该代码移动到连接中
该socket
对象连接到特定的客户端网页实例,并且它只接收该网页发送的消息。每次连接新的客户端页面时,都会创建一个新的socket
对象,并将其作为参数传递到connection
处理程序函数中。发生此错误的原因是.on('client_data')
必须绑定到socket
,而不是server_io
。代码可能如下所示:
server_io.on('connection', function(socket){
setInterval(function(){
socket.emit('date', {'date': new Date()});
}, 1000);
socket.on('client_data', function(data){
process.stdout.write(data.letter);
});
});