服务器无法从客户端获取消息

时间:2016-04-22 22:14:31

标签: javascript node.js

可能是一个愚蠢的问题,但服务器似乎无法收到客户发送的消息,任何人都可以提供帮助吗?

非常感谢 杰施

server.js

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

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/sensor_db');

io.on('connection', function(socket){
  console.log('connection received from Provisioning ');

    // Message received from Client :
    socket.on('data', function(data) {
    console.log('Message from provision is : ' + ': ' + data);
  });

});

http.listen(4000, function(){
  console.log('listening on *:4000');
});

Client.js

var io = require('socket.io-client');
var socket = io.connect('http://localhost:4000', {reconnect: true});

socket.on('connect', function(socket) {
  console.log('Connected!');
});
// Client send message :
socket.emit('jessi ann george');

1 个答案:

答案 0 :(得分:1)

在客户端,您通过密钥发出:jessi ann george。 但是,在服务器端,您只是在监听密钥data。 更改您的客户端以发出data或更改您的服务器以收听jessi ann george

为了将实际数据从客户端传递到服务器以及密钥发射,您需要添加如下数据对象:

socket.emit('data', { key: 'value' });

服务器端,您将获取此值'如

socket.on('data', function(data) {
    'Message from provision is : ' + ': ' + data.key;
});

可以传递一个简单的字符串作为数据,而不是javascript对象:

socket.emit('data', 'hello world');

将服务器端视为

socket.on('data', function(data) {
    'Message from provision is : ' + ': ' + data;
});

使用相同的语法将数据从服务器发送到客户端。服务器端:

// read this in Adele's voice
socket.emit('server data', 'hello from the server side');

客户方:

socket.on('server data', function(data) {
    console.log('Received server data: ' + data);
});