Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 以十六进制数组形式获取文本字符串的套接字,相互调用多个套接字';s事件_Javascript_Node.js_Socket.io - Fatal编程技术网

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());
});