是否可以创建一个Web应用程序,在中央服务器的帮助下,可以与同一Web应用程序的其他用户建立直接连接?我在想象一个类似于UDP打孔的过程.
我已经阅读了HTML5中的新WebSockets API,但看起来您必须在完全双工连接开始之前启动与WS兼容服务器的连接.我正在考虑更多关于在客户端之间建立直接连接的过程,服务器只涉及初始握手.
注意:Java小程序不计算在内.我只对标准浏览器技术感兴趣.
想象一下,我有服务器和客户端通过WebSocket进行通话.每个时间都发送另一个数据块.不同的块可以具有不同的长度.
我保证,如果服务器在一次调用中发送chunk,那么客户端将在一次message回调中收到它,反之亦然?也就是说,WebSocket是否具有嵌入式"打包"功能,所以我不必关心我的数据在传输过程中是否在几个回调中被分割,或者它不是?
我在NodeJS上运行SocketIO,我不太关心广泛的浏览器支持,因为这是我的宠物项目,我想利用新技术的所有功能来简化开发.我关心的是如何将大量的JSON数据从服务器发送到客户端并返回.嗯,这些数量不像视频或图像二进制数据那么大,我想每个请求不超过几百千字节.
我看到的两个场景是:
我在Meteor.js中看到了第一个案例,所以我想知道它的原因.请分享您的意见.
我有一个带socket.io的node.js服务器.我的客户端使用socket.io连接到node.js服务器.
数据以下列方式从客户端传输到服务器:
在客户端
var Data = {'data1':'somedata1', 'data2':'somedata2'};
socket.emit('SendToServer', Data);
Run Code Online (Sandbox Code Playgroud)
在服务器上
socket.on('SendToServer', function(Data) {
for (var key in Data) {
// Do some work with Data[key]
}
});
Run Code Online (Sandbox Code Playgroud)
假设某人修改了他的客户端并向服务器发送了大量数据.例如:
var Data = {'data1':'somedata1', 'data2':'somedata2', ...and so on until he reach for example 'data100000':'data100000'};
socket.emit('SendToServer', Data);
Run Code Online (Sandbox Code Playgroud)
因为服务器上的这个循环......
for (var key in Data) {
// Do some work with Data[key]
}
Run Code Online (Sandbox Code Playgroud)
...服务器需要很长时间才能遍历所有这些数据.
那么,防止此类情况的最佳解决方案是什么?
谢谢
编辑:
我用这个函数来验证对象:
function ValidateObject(obj) {
var i = 0;
for(var key in obj) {
i++;
if (i > …Run Code Online (Sandbox Code Playgroud)