Socket.emit没有按预期工作

时间:2015-04-03 13:24:38

标签: node.js sockets socket.io socket.io-1.0

我写了一个小代码。

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没有工作。任何人请指导为什么socket.emit不工作?

1 个答案:

答案 0 :(得分: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不是您的网页形成的服务器,那么您必须在服务器上启用跨源支持。