当前位置: 首页 > 知识库问答 >
问题:

IO-客户端连接,但不发射

越胤
2023-03-14

我正在制作一个加密聊天应用程序,在终端中,使用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个答案

司马英才
2023-03-14

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

将事件A从客户端发送到服务器,服务器必须监听A事件。

如果要将事件B从服务器发送到客户机,那么客户机必须监听事件B。

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

io基于这些所谓的“事件”。下面的代码将向服务器发送'my_event'事件,而Trasmented数据将成为对象{A:1}。

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

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

socket.on('my_event', function(data) {
    // data is the object { a: 1 }
    // do stuff..
});
 类似资料:
  • 在Netty中创建客户端连接时,我有一个问题。 这里,为什么我们没有一个bind方法,将通道绑定到发起客户端连接的端口(在客户端)?我们唯一需要提供的就是给出服务器地址和端口如下: 这是在客户端还是服务器端创建了一个新的通道?此通道绑定在客户端的哪个端口? 我们在执行服务器端引导时进行绑定,如下所示 我很困惑,不明白客户端从哪个端口向服务器发送数据,使用的是什么通道?

  • 问题内容: 我用NodeJS,socketIO和Express中的不同聊天室制作了一个聊天客户端。我正在尝试显示每个房间的已连接用户的更新列表。 有没有一种方法可以将用户名连接到对象,以便在执行操作时可以看到所有用户名: 然后执行以下操作: 我还可以通过其他方式做到这一点? 解决: 这有点重复,但是解决方案在任何地方都不很清楚地写出来,所以我想我会在这里写下来。这是的解决方案后由安迪轩至极被回答。

  • 执行kafka客户端的生产者/消费者连接池有意义吗? kafka是否在内部维护已初始化并准备好使用的连接对象列表? 我们希望最小化连接创建的时间,这样在发送/接收消息时就不会有额外的开销。 目前,我们正在使用apache共享池库来保持连接。 任何帮助都将不胜感激。

  • 我想知道以下问题的答案: 1)如果Ignite服务器重新启动,我需要重新启动客户端(web应用程序)。是否有任何方法可以在服务器重新启动时重新连接到服务器。我知道当服务器重新启动时,它分配了一个不同的ID,因此当前现有的连接变得过时。是否有方法克服这个问题,如果是的话,哪一个版本的Ignite支持这个功能。目前我使用1.7版本 3)如果我有一个大对象要缓存,我发现序列化和反序列化在Ignite中需

  • 我正在尝试使用react和express和socket.io建立一个聊天应用程序,但在尝试使用socket.io连接客户端和服务器时,我遇到了这个错误(我使用的是Firefox,我在所有其他浏览器上遇到了同样的错误) Firefox无法连接到ws:/localhost:5000/socket.io/?eio=4&transport=websocket处的服务器。 加载页面时,与ws://local

  • 我最近开始尝试使用JavaSockets类在服务器和客户机之间创建双向连接。当我使用客户机套接字地址作为但是当我在 客户端套接字显示连接是通过测试返回true。 然而,在服务器端,代码似乎并没有向前推进 我应该提供代码还是问题明确? 编辑:更多信息。无论我的防火墙处于什么状态,使用外部ip地址从我自己的电脑上远程登录都是有效的。当防火墙打开时,java客户端代码不起作用,抛出 当防火墙关闭时,使用