socket.io-client连接但不发出

时间:2016-05-14 16:39:24

标签: javascript node.js sockets socket.io

我正在终端中使用socket.io-client和socket.io制作一个加密的聊天应用程序。客户端能够连接到服务器,但在输入时不会发出用户名。

客户:

 var socket = require('socket.io-client')('http://127.0.0.1:3000');
 socket.on('connect_error', function(){
console.log('Failed to establish a connection to the servers, or lost     connection');

 return process.exit();     
  });
 var prompt = require("prompt-sync")()
 var news = "Add news: Will be from database. " 
 var username = prompt("Username>: ")

 console.log("Hold on a sec, just checking that!")
 console.log("")
 if (typeof username === "defined"){
 socket.emit('user-name', {usr: 'username'})
 }


socket.on('user-name-good',function(socket){
console.log("Okay! Your username looks good, we just require your password")
console.log("If you chose to have no password, please press enter with    out pressing space!")
 var password = prompt("Password>: ")
  if (typeof password !== "defined"){
    console.log("Please provide a password!")
    return password = prompt("Username>: ")
 }

 socket.on('user-name-fail',function(socket){
 console.log("Sorry, we could not find, "+username+""+"Please register    on the website, or, if you have registered ")
 return process.exit()
})    

}
)

服务器代码,基于socket.io聊天示例中的代码:

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

app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});

io.on('connection', function(socket){
socket.on('chat message', function(msg){
io.emit('chat message', msg);
});
});

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

我添加了一个错误事件,如果与服务器的连接失败,这将关闭客户端,所以我知道它的连接,任何帮助表示感谢,我已经对此主题进行了研究,并尝试了很多其他方法,但是没有用。

此外,在您提交数据后进行连接,而不是在启动客户端代码时,可能导致此问题的原因是什么?

1 个答案:

答案 0 :(得分:0)

如果要在客户端和服务器之间发送事件,则必须:

从客户端向服务器发送事件A,服务器必须正在侦听A事件。

如果要将事件B从服务器发送到客户端,则客户端必须正在侦听事件B.

除了代码中的其他内容之外,我没有看到您在客户端收听“聊天消息”事件的位置。

Socket.io基于这些所谓的“事件”。下面的代码将'my_event'事件发送到服务器,并且传输的数据将成为对象{a:1}。

socket.emit('my_event', { a: 1 });

如果我想在服务器上处理此事件,我必须听取它:

socket.on('my_event', function(data) {
    // data is the object { a: 1 }
    // do stuff..
});