簡體   English   中英

socket.io-client連接,但不發光

[英]socket.io-client connecting, but not emitting

我正在使用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');
});

我添加了一個錯誤事件,如果與服務器的連接失敗,它將關閉客戶端,所以我知道它的連接,感謝您的幫助,我已經對該主題進行了研究,並嘗試了許多其他方法,但無濟於事。

另外,連接是在提交數據之后進行的,而不是在啟動客戶端代碼時進行的,這可能是什么原因引起的?

如果要在客戶端和服務器之間發送事件,則必須:

從客戶端向服務器發送事件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..
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM