套接字获取文本字符串作为十六进制数组,多个套接字相互调用's事件
Socket getting text string as hex array, multiple socket call in each other's event
Client:
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());
}
});
server: (ingnore require part)
var socket = require('socket.io');
conn = function (socket) {
console.log("connnect");
socket.on('disconnect', function (socket) {
console.log("disconnect");
});
socket.on('message', function (data) {
var socket1 = new net.Socket();
socket1.connect (PORT, HOST, function() {
socket1.write(data);
socket1.end();
});
socket1.on('data', function(data) {
socket.broadcast.emit('message', data);
socket.emit('message',data);
});
socket1.on('error', function(exception){
console.log('Exception:');
console.log(exception);
});
socket1.on('drain', function() {
console.log("socket1 drain!");
});
socket1.on('timeout', function() {
console.log("socket1 timeout!");
});
socket1.on('close', function() {
console.log('Socket1 closed');
});
});
}
var io = socket.listen(server, { log: false });
io.sockets.on('connection', conn );
问题1(已解决,但需要反馈):我在客户端得到的响应(mkmessage变量)是十六进制数组格式,我尝试了setencoding和tostring方法,但它没有解决问题。以下代码将十六进制数组转换为可读字符串。
byte = '';
for (var i=0; i < data.length; i++) {
byte += String.fromCharCode( parseInt(data[i], 16).toString(16) );
}
问题2:每次都要创建tcp套接字socket1,这需要花费大量的时间。我如何创建和使用socket1,使它不会在每次写入后关闭?
在PORT HOST上侦听的其他家伙的状态是否强制它关闭?
您是否尝试显式设置套接字的编码?
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();
});
查看NodeJS文档了解更多细节。
如果没有帮助,你可以分享TCP服务器在HOST:PORT监听的代码(参见socket1
初始化)吗?
编辑
在下面的注释中提到:除非你在套接字上调用setEncoding(),否则'data'回调会接收Buffer对象。您应该将其转换为用于广播的String。
socket1.on('data', function(data) {
socket.broadcast.emit('message', data.toString());
});
相关文章:
- 如何使用HTML5与UDP套接字通信
- 在node.js中写入ECONNRESET错误和套接字连接检查
- java,javascript签名的小程序(文件选择,ftp上传)安全性/套接字异常
- 套接字服务器向客户端广播,但不从两者接收
- 如何确定套接字中的变量是否匹配
- 如何通过网络套接字连接到树莓派上的Mosquitto经纪人
- 快速的套接字 io 实例/中间件
- PHP:Web套接字和html 5
- 无法从客户端发出套接字消息
- STOMP web套接字回调不'不起作用
- Will my'新对象'在套接字断开连接时被垃圾收集
- 套接字服务器在本地获得500毫秒的往返时间
- 使用套接字在nodejs中调用函数
- 问.js节点承诺.“套接字”上缺少错误处理程序.类型错误:无法调用未定义的方法“then”
- 套接字.IO套接字未被调用
- 套接字上的远程过程调用.io在原生iOS应用程序中
- 套接字获取文本字符串作为十六进制数组,多个套接字相互调用's事件
- 反作弊-JavaScript'黑客攻击'--有可能阻止套接字被接收,或者函数被调用吗
- 套接字可以注册未调用的监听器
- 套接字.io-client:不能调用“连接”函数