【发布时间】:2015-03-15 19:24:45
【问题描述】:
我在 javascript 和节点中有这个小型聊天应用程序,我试图通过 websocket 发送一个简单的 JSON 对象,但它显示与我在服务器端执行的“JSON.parse”相关的错误。我试图更改代码,但似乎没有任何效果。为什么会这样? 我的操作系统是 windows 8.1,我使用的是 firefox 和 chrome。
undefined:1
undefined
^
SyntaxError: Unexpected token u
at Object.parse (native)
at WebSocketConnection.<anonymous> (C:\Users\*****\Documents\simple
_chat\server.js:39:22)
这是客户端的代码
var socket = new WebSocket('ws://127.0.0.1:1234');
function sendMessage(){
var message = document.getElementById('message').value;
var message_send ={
name_:"WHATEVER",
message_:message
}
socket.send(JSON.stringify(message_send));
}
socket.addEventListener("message", function(e){
var msg = e.data;
console.log(e);
document.getElementById('chatlog').innerHTML+='<br>'+msg;
})
这是服务器代码:
var count = 0;
var client ={};
var websocket = require('websocket').server;
wsServer = new websocket({httpServer:server});
wsServer.on('request',function(r){
var connection = r.accept(null, r.origin);
var id = count++;
client[id]=connection
console.log((new Date()) + ' Connection accepted [' + id + ']');
connection.on('message', function (message) {
var k = JSON.parse(message.data);
var message_ = k.content_
var name_ = k.name_;
console.log(name_ +" "+message_);
for(var i in client){
client[i].sendUTF(name_+": "+message_);
}
});
connection.on('close', function (reasonCode, description) {
delete client[id];
console.log((new Date()) + ' Peer ' + connection.remoteAddress + ' disconnected.');
})
})
【问题讨论】:
-
http请求返回的原始值是多少?
-
所以错误显示为
u,但您的代码没有任何名为u的变量,您能否通过查明实际上出错的地方来帮助我们,以及您尝试读取的 JSON 是什么,它是否可以通过网络解析(404,403 等),如果它解析,这是否是有效的 json?你不能只使用 JSON.parse,你总是需要将它包装在 try/catch 中,因为它会抛出错误的输入。添加try/catch,看看代码是否抛出,如果是,错误和输入是什么。
标签: javascript json node.js websocket