问一个H5的websocket的问题

南乔不休 2015-10-21 04:31:34
最近看Javascript权威指南,学着用websocket做个简易的聊天室。

代码如下:
客户端代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>

</head>
<body>

<input id="message" style="width:100%;">
<script type="text/javascript">
window.onload = function() {
var nick = prompt("请输入你的昵称!");
var input = document.getElementById('message');

while(!nick) {
nick = prompt("请输入你的昵称!");
}

input.focus();

// http://10.224.226.112:8080/app/#/hello

// var socket = new WebSocket("ws://localhost:8080/");
var socket = new WebSocket("ws://" + location.host + "/");

socket.onmessage = function(event) {
var msg = event.data;

var node = document.createTextNode(msg);
var div = document.createElement("div");
div.appendChild(node);
document.body.insertBefore(div, input);
input.scrollIntoView();
}

input.onchange = function() {
var msg = nick + ":" + input.value;
socket.send(this,msg);
input.value = "";
input.focus();
}

}
</script>
</body>
</html>



服务器端代码:
引用了第三方的插件:node-websocket-server(github上开源的)

var http = require("http");
var ws = require("websocket-server");

var clientUi = require("fs").readFileSync("chatRoom.html");

var httpServer = new http.Server();

httpServer.on("request", function(request, response) {
if (request.url === "/") {
response.writeHead(200, {"Content-Type": "text/html"});
response.write(clientUi);
response.end();
} else {
response.writeHead(404);
response.end();
}
});


var wsServer = ws.createServer({server: httpServer});

wsServer.listen(8000, function() {
console.log("Listening on port 8000");
});

wsServer.on("connection", function(socket) {
console.log("connect successfully!");
socket.send(this,"Welcome");
socket.on("message", function(msg) {
wsServer.broadcast(msg);
});
});




启动服务后,在CHROME中,创建socket时报错,报错信息是 握手连接时返回信息中缺少信息头:Sec-WebSocket-Accept

WebSocket connection to 'ws://localhost:8000/' failed: Error during WebSocket handshake: 'Sec-WebSocket-Accept' header is missing

===============================================================================
各位大神,帮忙看下是什么原因吧?
在Firefox上没有报这个错误,但是向服务器发送信息不成功,不能触发服务器端的连接事件,即connection事件,代码如下。
wsServer.on("connection", function(socket) {
console.log("connect successfully!");
socket.send(this,"Welcome");
socket.on("message", function(msg) {
wsServer.broadcast(msg);
});
});
...全文
2425 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
香蕉猪 2015-10-22
  • 打赏
  • 举报
回复
请确认浏览器是否支持。。。
南乔不休 2015-10-21
  • 打赏
  • 举报
回复
引用 1 楼 xmt1139057136 的回复:
http://blog.csdn.net/qqhjqs/article/details/49033687
版主大哥,这个是用java做后台的。我是用nodejs做服务器。 能帮忙看下我那个报错信息吗?

39,084

社区成员

发帖
与我相关
我的任务
社区描述
HTML5是构建Web内容的一种语言描述方式。HTML5是互联网的下一代标准,是构建以及呈现互联网内容的一种语言方式.被认为是互联网的核心技术之一。
社区管理员
  • HTML5社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧