Articles of websocket

为什么我的程序退出,并没有永远运行

我有一个websocket客户端代码复制..它的工作原理,除了它打印后打印你好1..Hello 2和你好3,然后退出。 我会认为run_forever意味着它将永远运行,那为什么它会退出? 如何让程序继续等待websocket消息? import thread import pdb import websocket import time import requests def on_message(ws, message): print message def on_error(ws, error): print error def on_close(ws): print "### closed ###" def on_open(ws): def run(*args): for i in range(3): time.sleep(1) ws.send("Hello %d" % i) time.sleep(1) ws.close() print "thread terminating…" thread.start_new_thread(run, ()) if __name__ == "__main__": URL […]

Raspberry + socket.io在本地networking上工作,但不在外部工作

我有一个Raspberry Pi服务通过一个server.js文件的HTML页面。 主线(不是所有的代码)是: var app = require('http').createServer(handler); var io = require('socket.io').listen(app); … app.listen(8000); … fucntion handler(req,res) { fs.readFile(__dirname+'/../index.html' function(err,data) { … io.sockets.on('connection', function (socket) { setInterval(function(){ … socket.emit('tempUpd',date,temp); }, 2000); }); 在index.html上: <head> … <script src="/socket.io/socket.io.js"></script> … </head> <body> <div id="info"></div> — <script> var socket = io.connect('http://192.168.1.6:8000'); socket.on('tempUpd', function(date, temp){ document.getElementById("info").textContent = temp; }); … […]

websocket与http模块一起工作,但不能与express(node.js)

我正在尝试使用express和websocket模块使websokects与node.js一起工作。 有趣的是,如果我使用http模块创build服务器,他们按预期工作,我收到状态101。 但是,如果我使用快速模块来创build服务器,它会引发一个错误: WebSocket connection to 'ws://localhost:2345/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED 这是代码 // using http module (works) var WebSocketServer = require("websocket").server; var http = require("http"); var app = http.createServer(function(request, response) { response.writeHeader(200, {'Content-Type':'text/html'}); response.end(""+ "<!DOCTYPE html>"+ "<html>"+ "<head>"+ "<script>"+ "var ws = new WebSocket('ws://localhost:2345/');"+ "ws.onmessage = function(event) { "+ "var span = document.createElement('span');"+ […]

无法通过networking连接到蚊子

我在Linux上安装了带有websokets支持的最新的Mosquitto MQTT代理,并且编辑configuration文件来为websocket添加一个监听器。 我将这些行添加到configuration文件中: listener 1883 protocol mqtt listener 1884 protocol websockets 当我跑步 sudo /usr/local/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf 代理启动,控制台中的其中一行显示 Opening websockets listen socket on port 1884. 并没有进一步的错误。 我认为websocket的听众应该已经开始运行了。 当我用Node.js中的mqtt.jstesting代理时,mqtt运行良好,但是我无法通过websocket连接到代理。 JS代码: var wsClient = mqtt.connect('ws://my.server.address:1884') wsClient.on('connect', function(){ console.log('ws connected') }) wsClient.on('error', function(err) { console.log(err) }) 运行JS代码后,我看到没有错误或连接的消息。 经纪人也没有显示任何关于ws连接的消息。 奇怪的是,我把这个工作全部用在另一个Ubuntu系统上,但是在这个系统上,只有一个Red Hat系统,只有mqtt连接正在工作,ws似乎没有工作,但是两边都没有显示错误。 什么可能导致这个问题? 谢谢。 UPDATE 我试图在代理服务器上运行该程序,使用ws://127.0.0.1:1884作为目标,并将其连接。 但从远程机器,说我的笔记本电脑或其他服务器,websokcets仍然无法正常工作。

有没有可能有一个IRC客户端使用运行你自己的IRC服务器没有websockets网关的websockets?

我正在计划build立一个IRCnetworking,并正在探索选项。 我打算使用Inspircd IRC服务器 。 随着运行meteor的networking服务器。 是否有可能build立一个networkingIRC客户端与WebSockets和不使用Webscokets网关(以减lessWeb服务器上的负载),并直接连接到IRC Inspircd框? 其次,如果是,则IRCclient <-> IRCServer与IRCclient <-> WebScoketGateway (/webserver) <-> IRC Server关系有什么优点/缺点。 我看到大部分涉及node或meteor的模块(包括socket.io )都使用WSGI,为什么呢? 我在这里错过了什么? 请注意在这种情况下,IRC服务器和Web服务器都由我运行,因此使浏览器相信两者都是相同的盒子的可能性。

Socket.io聊天服务器不提供SSL证书

(简单)聊天是我刚才创build的应用程序的一部分。 今天我将网站从http切换到https。 因此,我也必须SSL我的Socket.io聊天套接字,否则浏览器会发牢骚。 由于某种原因,虽然我的聊天服务器根本没有提交任何证书。 在Linux上使用openssl证实了这一点: openssl s_client -connect my.subdomain.tld:1337 -servername my.subdomain.tld -ssl3 回报 CONNECTED(00000003) 140136057653064:error:1409E0E5:SSL routines:SSL3_WRITE_BYTES:ssl handshake failure:s3_pkt.c:596: — no peer certificate available — No client certificate CA names sent — SSL handshake has read 0 bytes and written 0 bytes — New, (NONE), Cipher is (NONE) Secure Renegotiation IS NOT supported Compression: NONE Expansion: […]

Socket.io消息的发送者不能像其他用户那样获得消息

我想实现Socket.io的Roomfunction,我的configuration是这样的: io.on('connection', function (socket) { socket.join('123'); //… } 而当我想发出一个事件: socket.in('123').emit('sendMessage', {items:values]}); 但是除了这个消息的发送者,每个人都会得到这个消息 为什么? 我必须为发件人发送emit()单独的邮件吗? 如果我使用socket.to('123')而不是socket.in('123')我得到相同的结果,没有任何变化。 我使用Socket.io的官方文档: http : Socket.io

卡在console.log(JSON.stringify(req))中间件

当我从我的客户端连接到我的Express 4 node.js websocket服务器并尝试loggingreq时,整个程序就卡住了。 它仍然接受新的连接,并执行到相同的console.log,但然后卡住了。 我试图弄清楚需要包含什么,但是这种搞清楚的方式似乎并不奏效。 app.use(function (req, res, next) { console.log("middleware"); var session = req.session; console.log("session: " + JSON.stringify(session)); console.log("req non json: " + req); console.log("req: " + JSON.stringify(req)); //stuck return next(); });

socket.io传输是“轮询”而不是“websocket”在azure色

我在azure色的网站和configuration面板中启用的websockets有一个非常规的计划。 我使用socket.io和node.js. 客户端和服务器都使用“轮询”作为其传输,而不是websocket。 在服务器上,我有这些行,他们输出“轮询”。 setInterval(function(){ console.log(socket.conn.transport.name); }, 2000); 在localhost上使用的是websocket。 我已经尝试了在其他post中提出的事情,像这样: Socket.io连接恢复到轮询,从不会触发“连接”处理程序 ,但他们确实解决了这个问题。 有没有办法使azure色的工作使用websocket作为运输。

如何在socket.io中检测客户端的套接字服务器授权失败?

我想使用socket = io.connect()将一个js套接字客户端连接到socket.io服务器。 但是在服务器端,我使用io.use()方法来检查这个套接字连接是否包含cookie。 如果套接字初始握手不包含cookie,则限制套接字服务器上的请求进行连接。 通过传递next(new Error("Authentication Error")) 。 但即时通讯不能捕捉客户端的这个错误。 我想通知客户端无效的login会话并重新login。 谢谢