Articles of 套接字

koush AndroidAsync Socket.IO:看起来ConnectCallback()在Google Glass上没有被触发

我试图让我的谷歌眼镜和我的android手机连接到我在我的电脑上运行的一个NodeJs服务器,以便我可以从我的android手机发送消息到我的谷歌眼镜。 为此,我正在使用AndroidAsync的AndroidAsync库,这在我的android手机上效果很好,而且用这个库连接手机和NodeJS服务器是完全没有问题的。 然而,相同的代码似乎不能在我的谷歌眼镜工作。 我的Google Glass DOES连接,因为我的NodeJS服务器的连接EventHandler被触发,它似乎不会触发我的Google Glass上的任何ConnectCallbackfunction。 以下是我在Google Glass应用中使用的代码: SocketIOClient.connect(AsyncHttpClient.getDefaultInstance(), "http://192.168.1.229:5000", new ConnectCallback() { @Override public void onConnectCompleted(Exception ex, SocketIOClient client) { Log.i("SOCKET", "CONNECTION COMPLETED"); if (ex != null) { ex.printStackTrace(); return; } client.setStringCallback(new StringCallback() { @Override public void onString(String string, Acknowledge acknowledge) { Log.d("SOCKET", string); } }); client.setJSONCallback(new JSONCallback() { @Override public void onJSON(JSONObject […]

为什么我不能在node.js中结束活动的套接字而不会导致分段错误?

我试图阻止node.js中的一些HTTP服务器,但我不想等待所有keep-alive连接超时,才能完全closures服务器。 所以,我一直试图跟踪所有活动的套接字,然后当服务器需要被停止时,我想调用.end()让客户端知道我想closures套接字。 但是,当我这样做时,我得到了一个分段错误。 我已经使用了分段error handling程序来获得更好的堆栈跟踪,但我无法弄清楚会出现什么问题。 这里是跟踪连接的代码: connectionNum = 1 activeHttpConnections = {} trackConnection = (map, socket) -> # save active socket id = connectionNum map[id.toString()] = socket # remove socket once it closes socket.on 'close', -> map[id.toString()] = null delete map[id.toString()] # reset connection number eventually if connectionNum > 1000000 connectionNum = 1 else connectionNum++ […]

Android的tcp套接字设置etimedout值

我有Android上的TCP套接字客户端。 另外,我有tcp套接字服务器nodejs,它发送到连接客户端testing消息每2秒。 当我启动应用程序时,它从服务器接收testing消息。 但是,当我closuresWi-Fi连接,我的客户端套接字closures并抛出SocketException(etimedout),如果我打开Wi-Fi我无法接收服务器消息。 但服务器消息已经在服务器中排队,并等待发送给客户端。 据我所知,如果tcp客户端丢失连接,它应该尝试修复连接并接收服务器消息。 但在我的情况下,客户端无法接收消息,因为套接字closures。 在我的电脑上使用Windows和Linux套接字客户端,我正在做同样的事情,但是当我closuresWi-Fi时,客户端套接字没有closures,当我切换Wi-Fi时,我收到消息, -fi禁用。 问题:为什么在android中,套接字很快closures? 我可以设置套接字客户端closures的任何超时? 我试过了 : setKeepAlive(true); setSoTimeout(10000); 试过使用SocketFactory.getDefault().createSocket(); 没有效果。

如何从socket.io 1.2迁移到socket.io 0.9.16?

我有这个代码写在Socket.io 1.2中 var app=require('express')(); var http=require('http').Server(app); var io=require('socket.io')(http); var room; var messageEmitted;; app.get('/', function(req, res){ res.sendFile(__dirname +'/index.html'); }); app.get('/lol', function(req, res){ res.sendFile(__dirname +'/lol.html'); }); io.use(function(socket,next){ var handShakeData=socket.request; room=handShakeData._query['roomName']; messageEmitted=handShakeData._query['messageText']; next(); }); io.on('connection',function(socket){ console.log('A user connnected on : '+room); socket.join(room); io.to(room).emit('emittedMessages',messageEmitted); console.log(messageEmitted); /*socket.on('emittedMessages',function(msg){ //socket.emit(msg); // Send message to sender socket.broadcast.emit(msg); // Send message to everyone BUT […]

UNIX域套接字 – 长string问题

我尝试通过node.js中的UNIX域套接字发送一个相当长的string(abt 40000个字符)。 但它并没有发送正确的。 在接收器我多次获得string的一些部分…任何想法这里的问题是什么? 接收器是一个node.js应用程序,我通过它发送 nc -U /tmp/node.sock inheritance人我用来接收消息的node.js代码 var server = net.createServer(function (socket) { socket.on('data', function (data) { console.log(data.toString()); }); }).listen('/tmp/node.sock');

移动应用程序中的套接字认

我想知道如何正确validation用户使用套接字和cordova。 目前,发生以下情况: 用户使用正常的ajax命令注册或login,发送email和password 我发回一个访问令牌和他们的电子邮件,这是存储在localstorage存储在localstorage上,并作为email => accesstoken在redis 然后用户发送一个连接请求到socket.io服务器,就像( 客户端 ): var socket = io('http://192.168.50.3:8080/'); socket.on('connect', function(){ socket.emit('init', { email: 'email@email.com', token: '12ueno1' }); }); 然后,我检查后端,如果访问令牌和电子邮件在我的Redis服务器,如果他们是,我开始监听客户端发送的任何命令( 服务器端 ): var io = require('socket.io').listen(8080), mongoose = require('mongoose'), schema = mongoose.Schema, userModel = require('./models/user'), lobbyModel = require('./models/lobby'), redis = require('redis').createClient(); io.sockets.on('connection', function(socket){ socket.on('init', function(data){ // here, we check for an […]

socket.io – 序列化套接字

是否有任何开箱即可以序列化和反序列化套接字? 我看了全部,似乎无法find关于这个问题的任何东西。 如果方便(de)序列化不存在,有没有办法dynamic地使用它们的属性来构build套接字,所以我可以手动执行它? 谢谢!

使用socket.io时分配大小溢出

我正在开发一个与Node.js的Web应用程序,我使用它的socket.io。 我有问题,有时socket.io似乎没有工作。 当我查看浏览器控制台时,看到一个“分配大小溢出”错误消息,指向这段代码: var msgLength = ''; for (var i = 1; ; i++) { if (tailArray[i] == 255) break; msgLength += tailArray[i]; // this is the line which causes the error } 如果有人想看更多的代码,我会说这些是节点的socket.io模块,版本1.0.2的socket.io.js(显然,客户端文件)的行3725-3729。 看来上面的函数产生一个太长的string。 然而,我一直在调查一个string的最大长度,我发现这个问题,这清楚地表明没有string长度的限制。 经过深入调查,我发现并重现了一个导致浏览器出现“分配大小溢出”错误警告的例子。 代码如下: var a = 'a'; for (var i = 0; i < 100; i++) { a += a; […]

客户端不会使用Socket.io和Node.js实时更新

为什么我的客户端不能使用socket.io和node.js自动更新? 我的后端接受来自PHP的JSON POST请求,然后它将数据发送到所有连接的设备。 我的后端代码 app.post('/', function (req, res) { console.log(req.body); subdata = req.body; res.send('ok'); }); io.sockets.on('connection', function (socket) { socket.broadcast.emit('info', subdata); }); 客户端 <script> var socket = io.connect('http://127.0.0.1:3000/'); socket.on('info', function (data) { console.log(data); }); </script>

有两个node.js服务器的Socket.io?

我很困惑如何使用socket.io,使两个节点服务器之间可以发出事件。 Server.js localhost:9200 io.sockets.on('connection', function(socket) { socket.on('messageFromClient', function(data) { socket.broadcast.to(data.chatRoom).emit('messageFromServer', data); }); }); 这个套接字连接像这样监听服务器 var appPort = 9200; var express = require('express'); var app = express(); var http = require('http'); var server = http.createServer(app); var io = require('socket.io').listen(server); // Launch server server.listen(appPort); 我有一个由node.js服务的网站… Server.js localhost:3000 :我需要这个能够接收和发出事件从本地主机:9200 如何为localhost:3000设置server.js?