2016-04-22 10 views
0

Könnte eine dumme Frage sein, aber der Server kann nicht scheinen, die Nachricht vom Client gesendet, kann jeder helfen?Server nicht in der Lage, Nachricht Formular zu erhalten Client

Vielen Dank Jessi

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

Es sei denn, 'Daten' einen bestimmten Auslöser ist, dass ich nicht bewusst, Sie könnten versuchen, 'socket.emit ('Daten',‚jessi ann george '); ' –

+0

Warum müssen wir die Nachrichten in separaten Anführungszeichen geben? Kannst du bitte Erklären? Ich werde versuchen, dass jetzt –

+0

Ich habe versucht, was Sie sagten, die Server-Ausgabe ist: –

Antwort

1

Auf der Client-Seite, die Sie durch den Schlüssel emittierenden: jessi ann george. Auf der Server-Seite hören Sie jedoch nur den Schlüssel data. Ändern Sie entweder Ihren Client, um data auszugeben, oder ändern Sie Ihren Server, um nach jessi ann george zu hören.

Um zusammen mit Ihrem Schlüssel Emissions Ist-Daten vom Client zum Server zu übergeben, müssen Sie wie ein Datenobjekt hinzuzufügen:

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

Server-Seite, würden Sie diesen ‚Wert‘ als

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

Es ist möglich, einen einfachen String als Ihre Daten zu übergeben, sondern als ein Javascript-Objekt:

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

Und es Server-Seite behandeln, als

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

Daten gesendet vom Server zum Client funktioniert, indem die gleiche Syntax. Server-Seite:

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

Kunde:

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

Wie ändern wir die Cleint-Seite, um Daten zu emittieren? –

+0

Danke Freeman, ich wollte einfach eine einfache Nachricht an den Server senden, keine Schlüsselwörter .. und der Server sollte es empfangen und anzeigen können. Das ist, was ich versuche zu tun –

+0

Überprüfen Sie das einfache String-Beispiel in meiner aktualisierten Antwort. Ich muss sagen, dass es sehr unüblich ist, literale Werte wie Zahlen oder Strings durch socket.io zu sehen. Normalerweise übergeben Sie JS-Objekte. Socket.io im Hintergrund serialisiert Objekte in * stringified * strings und demialisiert diese wieder zu * analysierten * Objekten auf der Empfängerseite. –

Verwandte Themen