Javascript Socket.io,can';无法从客户端发出自定义事件

Javascript Socket.io,can';无法从客户端发出自定义事件,javascript,node.js,sockets,express,socket.io,Javascript,Node.js,Sockets,Express,Socket.io,我有一个非常简单的应用程序,客户端JS应该从表单中获取数据,并通过data事件将其发送到服务器 以下是服务器端代码: var express = require('express'), app = express(), http = require('http').Server(app), io = require('socket.io')(http); io.sockets.on('connection', fu

我有一个非常简单的应用程序,客户端JS应该从表单中获取数据,并通过
data
事件将其发送到服务器

以下是服务器端代码:

var express     = require('express'),
    app         = express(),
    http        = require('http').Server(app),
    io          = require('socket.io')(http);

io.sockets.on('connection', function(socket) {
    console.log('Client connected');
});
io.sockets.on('data', function(data) {
    console.log(data);
});

http.listen(8080);
var socket = io.connect('http://localhost:8080');

$('#send').click(function(e) {
    e.preventDefault();
    socket.emit('data', {
        transportation: $('#transportation').val(),
        distance: $('#distance').val()
    });
});
以下是客户端代码:

var express     = require('express'),
    app         = express(),
    http        = require('http').Server(app),
    io          = require('socket.io')(http);

io.sockets.on('connection', function(socket) {
    console.log('Client connected');
});
io.sockets.on('data', function(data) {
    console.log(data);
});

http.listen(8080);
var socket = io.connect('http://localhost:8080');

$('#send').click(function(e) {
    e.preventDefault();
    socket.emit('data', {
        transportation: $('#transportation').val(),
        distance: $('#distance').val()
    });
});

在服务器端控制台中,我看到正确接收了
连接
事件,但没有正确接收到
数据
事件…

您需要在客户端套接字上添加处理程序,如下所示:

io.sockets.on('connection', function(socket) {
    console.log('Client connected');
    socket.on('data', function(data) {
        console.log(data);
    });
});

http.listen(8080);