Node.js 使用NodeJS和Socket.IO设置无状态连接
在使用PHP和Unity3D创建项目原型之后,我决定使用Cordova和NodeJS构建生产版本 我目前正在NodeJS中使用Socket.io,对连接有一些混淆。我本以为这是通过以下程序实现的:Node.js 使用NodeJS和Socket.IO设置无状态连接,node.js,sockets,Node.js,Sockets,在使用PHP和Unity3D创建项目原型之后,我决定使用Cordova和NodeJS构建生产版本 我目前正在NodeJS中使用Socket.io,对连接有一些混淆。我本以为这是通过以下程序实现的: 客户端将通过请求连接到服务器 服务器将响应该请求 连接将被关闭 然而,似乎连接喜欢保持打开状态,如果连接关闭,它会不断尝试重新连接,这不是我要寻找的。我试图建立一个单一的数据传输状态,类似于向PHP文件发出web请求时发生的情况 该项目的源代码基本上是样板代码: var application = r
var application = require('express')();
var http = require('http').Server(application);
var server = require('socket.io')(http);
http.listen(8080, function() {
console.log('Listening on *:8080');
});
server.on('connection', function(socket) {
console.log('SERVER: A new connection has been received.');
server.on('disconnect', function() {
console.log('SERVER: A connection has been closed.');
});
});
我不需要持久连接,也不需要
想法:我可以与客户进行亲密的握手。例如:
这是正确的处理方法吗?然而,问题出现了,如果数据丢失,那么就会有一个永久打开的套接字。在这种情况下,实现基本超时是否理想?(即:如果在10秒内未收到响应,则表示出现错误或服务器不可用) 不确定为什么要使用socket.io进行此操作。套接字IO用于不同的目的,在这里不符合您的标准。我主要了解了它在实时应用程序和二进制流中的使用
var net = require('net');
var HOST = '127.0.0.1';
var PORT = 6969;
// Create a server instance, and chain the listen function to it
// The function passed to net.createServer() becomes the event handler for the 'connection' event
// The sock object the callback function receives UNIQUE for each connection
net.createServer(function(sock) {
// We have a connection - a socket object is assigned to the connection automatically
console.log('CONNECTED: ' + sock.remoteAddress +':'+ sock.remotePort);
// Add a 'data' event handler to this instance of socket
sock.on('data', function(data) {
console.log('DATA ' + sock.remoteAddress + ': ' + data);
// Write the data back to the socket, the client will receive it as data from the server
sock.write('You said "' + data + '"');
});
// Add a 'close' event handler to this instance of socket
sock.on('close', function(data) {
console.log('CLOSED: ' + sock.remoteAddress +' '+ sock.remotePort);
});
}).listen(PORT, HOST);
console.log('Server listening on ' + HOST +':'+ PORT);
检查一下那么Socket.io对于您的场景来说是错误的工具。io需要保持套接字打开,以便将事件从服务器返回到客户端(反之亦然)。事实上,即使大多数服务器不支持WebSocket,socket.io也会求助于其他机制,例如轮询