Select Case e.Path
Case "get"
Dim sb As New StringBuilder
sb.AppendLine("<!DOCTYPE HTML PUBLIC>")
sb.AppendLine("<html>")
sb.AppendLine("<head>")
sb.AppendLine("<title>websocket client</title>")
sb.appendline("<script src='./css/g.js'></script>")
sb.AppendLine("</head>")
sb.AppendLine("<body>")
sb.AppendLine("<form id='sendForm'>")
sb.AppendLine("<span>输入内容按回车发送消息</span> <br/>")
sb.AppendLine("<input id='sendText' placeholder='Text to send' />")
sb.AppendLine("</form>")
sb.AppendLine("<pre id='incomming'></pre>") ‘这段应该就是调用ID incomming,不断在前端页面刷新接收到的每一条信息。
sb.AppendLine("</body>")
sb.AppendLine("</html>")
e.WriteString(sb.ToString)
End Select
也将javascript部分改为引用外部文件g.js
代码是:
var start = function () {
var inc = document.getElementById('incomming');
var wsImpl = window.WebSocket || window.MozWebSocket;
var form = document.getElementById('sendForm');
var input = document.getElementById('sendText');
inc.innerHTML += "连接服务器..<br/>";
// 创建一个新的websocket并连接
window.ws = new wsImpl('ws://127.0.0.1:777/');
// 当数据来自服务器时,将调用此方法
ws.onmessage = function (evt) {
//不断刷新接收来自服务器的信息;
inc.innerHTML = (evt.data);
};
// 当建立连接时,将调用此方法
ws.onopen = function () {
inc.innerHTML += '已建立连接.. <br/>';
};
// 当连接关闭时,将调用此方法
ws.onclose = function () {
inc.innerHTML += '连接已关闭.. <br/>';
}
form.addEventListener('submit', function (e) {
e.preventDefault();
var val = input.value;
ws.send(val);
input.value = "";
});
}
window.onload = start;
经常这样构造,和普通静态的HTML模板运行的效果是一样的,也能正确收到信息了。
如何将刷新的每一条incomming字符内容保存到指定的数据库里面呢?
基础差,只能想到应该是将下面红色代码改造一下,WEB端基础差了点,实在不会加进去了,还请示范下,谢谢。
Dim dr As DataRow = DataTables("记录表").SQLAddNew()
dr("内容") = e.Values("incomming")
dr.Save() '用SQLAddNew增加的行,必须保存一下,否则会被丢弃.