当我运行我的代码时,我得到:
突破异常:预期的字符串
我要做的是使用websocket连接到我的服务器。但是,似乎无论我的服务器是否在线,客户端仍然崩溃。 我的代码:
import 'dart:html';
WebSocket serverConn;
int connectionAttempts;
TextAreaElement inputField = querySelector("#inputField");
String key;
void submitMessage(Event e) {
if (serverConn.readyState == WebSocket.OPEN) {
querySelector("#chatLog").text = inputField.value;
inputField.value = "";
}
}
void recreateConnection(Event e) {
connectionAttempts++;
if (connectionAttempts <= 5) {
inputField.value = "Connection failed, reconnecting. Attempt" + connectionAttempts.toString() + "out of 5";
serverConn = new WebSocket("ws://127.0.0.1:8887");
serverConn.onClose.listen(recreateConnection);
serverConn.onError.listen(recreateConnection);
} else {
inputField.value = "Connections ran out, please refresh site";
}
}
void connected(Event e) {
serverConn.sendString(key);
if (serverConn.readyState == WebSocket.OPEN) {
inputField.value = "CONNECTED!";
inputField.readOnly = false;
}
}
void main() {
serverConn = new WebSocket("ws://127.0.0.1:8887");
serverConn.onClose.listen(recreateConnection);
serverConn.onError.listen(recreateConnection);
serverConn.onOpen.listen(connected);
//querySelector("#inputField").onInput.listen(submitMessage);
querySelector("#sendInput").onClick.listen(submitMessage);
}
我的Dart编辑器没有说明问题的来源,也没有在运行时发出任何警告。
答案 0 :(得分:1)
您需要使用有效值初始化int connectionAttempts;
;
connectionAttempts++;
上的null
因例外而失败。
您还需要一个onMessage
处理程序来接收消息。
serverConn.onMessage.listen((MessageEvent e) {
recreateConnection
也应注册onOpen
处理程序。
serverConn = new WebSocket
之后注册的main()
中的监听器将无法正常工作
如果您注册的听众只需要一个活动,那么您可以使用first
代替listen
serverConn.onOpen.first.then(connected);
根据@JAre的评论。
尝试使用硬编码字符串
querySelector("#chatLog").text = 'someValue';
确保这不是罪魁祸首。