我想向客户发送关闭代码,但始终为1006。
我尝试过
@ExceptionHandler({ CustomException.class })
@ResponseStatus(HttpStatus.CONFLICT)
public List<ErrorOutDTO> handle(CustomException theException) {
return new null;
}
但不适用于所有这些情况。如何向客户发送1006以外的邮件?
我还测试了Node js ws软件包以验证客户端的软件包。
func ServeWs(w http.ResponseWriter, r *http.Request) {
conn := Upgrade(w, r)
msg := websocket.FormatCloseMessage(4001, "myError")
// case 1
conn.WriteMessage(websocket.CloseMessage, msg)
// case 2
//conn.WriteControl(websocket.CloseMessage, msg, time.Now().Add(time.Second))
// case 3
//w, err := conn.NextWriter(websocket.CloseMessage)
//if err != nil {
// return
//}
//if _, err = w.Write(msg); err != nil {
// log.Println(err)
//}
//w.Close()
time.Sleep(10*time.Second)
conn.Close()
}
func Upgrade(w http.ResponseWriter, r *http.Request) *websocket.Conn{
conn, err := upgrader.Upgrade(w, r, nil)
if err != nil {
log.Println(err)
return nil
}
return conn
}
此javascript代码工作正常。
===已添加===
用于测试的客户代码。在chrome dev工具控制台中,粘贴以下
const WebSocket = require('ws');
const ws = new WebSocket.Server({ port: 8088 });
ws.on('connection', function connection(ws) {
ws.close(1000, 'bac');
});
答案 0 :(得分:0)
这都是因为“睡眠”
String dt = dateString.substring(0, dateString.indexOf("T"))
删除睡眠后,代码可以正常工作。