When reading into a %variable the sockread event is only retriggered if the receive queue contains a $crlf
You should use a while loop to fully read the buffer:
on *:sockread:weather: {
if ($sockerr) {
echo -a Error.
halt
}
else {
var %temptext
sockread -f %temptext
while ($sockbr) {
if (%temptext) { echo -ag %temptext }
sockread -f %temptext
}
}
}