gpt4 book ai didi

javascript - 客户端和服务器在同一个nodejs进程中

转载 作者:太空宇宙 更新时间:2023-11-04 00:58:46 24 4
gpt4 key购买 nike

尝试在同一 Node 进程中使用客户端和服务器创建回显服务器测试。如果我将其拆分为 2 个文件(服务器和客户端),此代码可以工作,但如果合并为 1 个文件,则该代码不起作用。我怎样才能让它在 1 个文件中工作?

var HOST, createServer, g, net;

net = require("net");

HOST = "127.0.0.1";

createServer = function(port) {
net.createServer(function(sock) {
sock.write("welcome! on port " + port + "\r\n");
console.log("CONNECTED: " + sock.remoteAddress + ":" + sock.remotePort);
while (true) {
sock.write("hello\r\n");
}
}).listen(port, HOST);
console.log("server listening on " + port);
};

createServer(7001);

g = net.createConnection(7001, HOST);

g.on("data", function(data) {
console.log("got " + data);
});

在 CoffeeScript 中也是如此:

net = require "net"
HOST = "127.0.0.1"

createServer = (port) ->
net.createServer((sock) ->
sock.write("welcome! on port #{port}\r\n")
console.log("CONNECTED: #{sock.remoteAddress}:#{sock.remotePort}")
while true # this is the work queue, what ports to send to...
sock.write "hello\r\n"
return
).listen port, HOST
console.log "server listening on #{port}"
return

createServer(7001)

# XXX why does g.on "data" never fire?
# this works fine if I move it into
# it's own file, how to co-exist
# this client with server above
# in same file?
g = net.createConnection(7001, HOST)
g.on "data", (data) ->
console.log "got #{data}"
return

最佳答案

while (true) {
sock.write("hello\r\n");
}

这是你的问题。您无限期地写入流;如果它永远不会结束,它就不会触发你的“数据”事件。为了更清楚地说明,请尝试以下操作(代替上面的代码):

while (true) {
console.log("hello!");
sock.write("hello\r\n");
}

或者:

var i = 0;
while (i < 5) {
i++;
sock.write("hello\r\n");
}

编辑:要无限期地继续回显,也许可以尝试这样的事情:

net.createServer(function(sock) { 
sock.write("welcome! on port " + port + "\r\n");
console.log("CONNECTED: " + sock.remoteAddress + ":" + sock.remotePort);
setInterval(function() {
sock.write("hello\r\n");
}, 2000);
}).listen(port, HOST);

关于javascript - 客户端和服务器在同一个nodejs进程中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28118818/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com