直接上代码(有点乱,下面有我的直接描述):
服务器端:
io.sockets.on('connection', function (socketIO) {
// 测试用,连接成功
socketIO.emit("test","your websocket has connected");
//返回数据使用,控制C服务器
socketIO.on('fromWebClient', function (webClientData) {
});
// 从C服务器接收数据
nodeServer.on('data', function (data) {
if(data.readUInt8(0)==170){
sbuf.writeUInt32LE(len,0);//写入包长
exBuffer.put(sbuf);
exBuffer.put(data);
}
else{
exBuffer.put(data);
}
console.log('nodeServer'+data.length);
});
//当nodeServer收到完整的数据包时
exBuffer.on('data', function(buffer) {
console.log('>> nodeServer receive data.length:'+buffer.length);
//console.log(buffer);
//console.log(buffer.readInt32LE(826));
haha++;
console.log(haha);
var useData=byteArrayUntil.getUseJson(buffer,offset);
console.log(useData.hz.length);
//向客户端发送json数据
socketIO.emit('pushToWebClient',useData);
});
客户端(简化了的):
socket.on('pushToWebClient', function (useData) {
i++;
console.log(i);
console.log(useData);
processingData(useData);
});
是这样的,服务器接收tcp服务器的数据后,通过socket.io传给网页显示。
我的启动顺序,先启动tcp服务器(),然后nodejs写的服务器,再打开网页,接着发送数据。这样才不会出错。。。
【问题一】:我想一直开着nodejs服务器,然后启动tcp服务器后,打开网页就能接受到数据显示。应该怎么改?(我知道要把nodeServer拿出来,但是一拿出来
//向客户端发送json数据
socketIO.emit('pushToWebClient',useData);
这一句不能独立用,而且我兼顾第二个问题没有解决
)
【问题二】:目前我第一次打开网页,发送一次数据后,接受数据仅显示一次;关闭网页重新打开,发送数据后,接受数据显示4次,再重复关闭打开,接收数据显示9次;直接导致如果重复打开关闭,网页显示刷新就会很多,导致cpu占用很高。这是为什么呢?
第二个问题我最后还是没有想明白,不过用控制进程的方法
cpu就不会那么高了,而第一个问题,我var aSocket=null;
建立握手后,aSocket=socketIO;
后面
在接收数据
有点乱,仅供参考。。。。