Javascript 以十六进制数组形式获取文本字符串的套接字,相互调用多个套接字';s事件
客户:Javascript 以十六进制数组形式获取文本字符串的套接字,相互调用多个套接字';s事件,javascript,node.js,socket.io,Javascript,Node.js,Socket.io,客户: var iosocket = io.connect(); iosocket.on('connect', function () { iosocket.on('message', function(message) { console.log(message) }); }); $('#input').keypress(function(event) { if(event.which == 13) { event.preventDefault
var iosocket = io.connect();
iosocket.on('connect', function () {
iosocket.on('message', function(message) {
console.log(message)
});
});
$('#input').keypress(function(event) {
if(event.which == 13) {
event.preventDefault();
iosocket.send($('#input').val());
}
});
服务器:(ingnore需要部分)
问题1(已解决,但需要反馈):
我在客户端得到的响应(mkessage变量)是十六进制数组格式的,我尝试了setencoding和tostring方法,但没有解决问题。以下代码将十六进制数组转换为可读字符串
byte = '';
for (var i=0; i < data.length; i++) {
byte += String.fromCharCode( parseInt(data[i], 16).toString(16) );
}
byte='';
对于(变量i=0;i
问题2:
每次都会创建tcp套接字socket1,这需要花费大量时间。如何创建和使用socket1,使其不会在每次写入后关闭?在端口主机上侦听的其他人的状态是否会强制其关闭?您是否尝试显式设置套接字的编码
socket.on('message', function (msg) {
var socket1 = new net.Socket();
socket1.setEncoding('utf8'); //< explicitly request utf8
socket1.connect (PORT, HOST, function() {
socket1.write(msg);
socket1.end();
});
代码片段呢?我已经添加了代码。这对解决我的问题没有多大用处。我尝试了socket1的set编码。。可能是我做错了什么var server=http.createServer(函数(req,res){res.writeHead(200,{'Content-type':'text/html'});res.end(fs.readFileSync(u dirname+/index.html');});listen(8080,function(){console.log('Listening at:);});listen(服务器,{log:false}).on('connection',函数(socket){问题是,socket1的回调。on('data')将接收缓冲区对象(不是字符串)。您应该使用data.toString()发出socket.io事件,或者显式设置socket1编码。
socket.on('message', function (msg) {
var socket1 = new net.Socket();
socket1.setEncoding('utf8'); //< explicitly request utf8
socket1.connect (PORT, HOST, function() {
socket1.write(msg);
socket1.end();
});
socket1.on('data', function(data) {
socket.broadcast.emit('message', data.toString());
});