我一直在谷歌搜索一段时间,似乎没有解决我在这里解决这个问题的提议。
我使用LuaSocket作为连接到我创建的外部服务器的简单方法,并且我能够成功连接到它并发送信号。
但是,当我稍后尝试发送第二条消息时,外部服务器似乎没有收到消息,即使我仍然连接到套接字。
socket = require("socket")
host, port = ip, port
tcp = assert(socket.tcp())
tcp:settimeout( 0 )
tcp:connect(host, port);
msg = {
["status"]="connect",
["usrName"]=username
}
msg = Json.Encode(msg)
tcp:send(msg); -- This message, the server received this message.
-- Later in my code, I attempt to send another message.
msg = {
["status"]="anotherMessage",
["usrName"]=username
};
msg = Json.Encode(msg)
tcp:send(msg); -- This message is not sending, even though i'm still connected.
答案 0 :(得分:1)
您需要显示另一方发生的事情,因为即使连接可能已打开,它也可能根本无法读取。你也没有说“消息没有发送”时到底发生了什么;你有错误吗?脚本完成但邮件没有发送?
您可以尝试以下几种方法:
tcp:settimeout(0)
,因为如果另一方尚未准备好阅读该消息,您的发送可能会因“超时”消息而失败。检查来自:send
来电的错误消息,看看它是否超时。
local ok, err = tcp:send(msg)
使用socket.select
检查对方是否已准备好接受您要发送的邮件。
答案 1 :(得分:0)
尝试在序列化JSON的末尾添加"\r\n"
。