2016-05-14 141 views
0

我正在使用socket.io-client和socket.io在终端上制作一个小加密的聊天应用程序。客户端能够连接到服务器,但输入时不会发出用户名。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'); 
}); 

我添加了一个错误事件,该关闭客户端,如果涉及的连接服务器故障,所以我知道它的连接,任何帮助表示赞赏,我已经做了这个主题的研究,并尝试了很多其他方法,但无济于事。

此外,连接是在您提交数据后进行的,而不是在客户端代码启动时发生,可能会导致这种情况?

回答

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.. 
}); 
+0

我注重的登录,也没怎么去聊天消息。 – FlerrElectronics

+0

如何使用从客户端发送到服务器的数据? (a ===“foo”){console.log(“a ===”foo“}。 – FlerrElectronics

+1

在客户端写下如下内容:socket.emit('eventA','foo');以及在服务器端添加:socket.on('eventA',function(data){console.log(data);});它会在服务器的控制台上显示'foo'字符串。如果你检查typeof用户名===“defined”..它永远不会工作,因为typeof关键字不会返回'defined'。提示会为用户名变量分配一个字符串,所以你可以简单地检查:if(username){// do stuff ..} – Azamantes

相关问题