2015-04-03 67 views
0

我写了一个小代码。Socket.emit不按预期工作

var app = require('../app'); 
var debug = require('debug')('PHCServer:server'); 
var http = require('http'); 
var pg = require('pg'); 

var port = normalizePort(process.env.PORT || '3000'); 
app.set('port', port); 
var server = http.createServer(app); 
var io = require('socket.io')(server); 

io.on('connection',function(socket){ 
    socket.on('message',function(data){ 
    pg.connect(str,function(err,client,done){ 
     var c = "'"+data.complaint+"',"; 
     c += "'"+data.symptoms+"'"; 

     client.query("INSERT INTO Appointment (complaint,symptoms) VALUES ("+c+")", 
     function(error,result){ 
      console.log('result is'); 
      console.log(data.eid); 
      socket.emit('message1','djlksjdslkj'); 
      client.end(); 
     }); 
    }); 
    console.log(data); 
    }); 
    socket.on('message1',function(data){ 
    console.log('message1 is'); 
    console.log(data); 

    }); 
}); 

从客户端本人写的小码

var socket = io.connect('http://lit-spire-7546.herokuapp.com'); 
socket.emit("message",obj); 

它插入PostgreSQL中的数据,但不socket.emit人working.can准则请为什么socket.emit不工作?

回答

0

首先,你必须等待客户端套接字尝试使用它之前连接:

var socket = io.connect('http://lit-spire-7546.herokuapp.com'); 
socket.on("connect", function() { 
    socket.emit("message",obj); 
}); 

另外,如果http://lit-spire-7546.herokuapp.com是不是你的网页来了形式的服务器,那么你将不得不在您的服务器上启用跨源支持。

+0

发射没有问题。因为消息发出多数民众赞成为什么它去服务器和创建约会.issue是当我打电话socket.emit服务器端.thats不工作.getting我的观点? – 2015-04-05 14:16:00

+0

@RiteshMehandiratta - 您的客户端代码不显示'message1'消息的侦听器。出于某种原因,您将该侦听器放入服务器中。但是,您将消息从服​​务器发送到客户端,因此如果您想查看该消息,则必须将侦听器置于客户端代码中。 – jfriend00 2015-04-05 17:08:32