Articles of 套接字

使用JWT令牌。 有更好的方法吗?

我通过nJWT包使用JWT令牌,使用socket.io-jwt包将我的用户validation到我的Socket.io。 或多或less,代码看起来像这样。 用户通过HTML表单发送POST请求来播放/login以生成JWT令牌。 然后,socket.io客户端使用该令牌进行初始化。 /** * Create Express server. */ const app = express(); const http = require('http').Server(app); const io = require('socket.io')(http); const socketioJwt = require('socketio-jwt'); app.set('jwt.secret', secureRandom(256, { type: 'Buffer' })); app.post('/play/login', (req, res) => { // validate user's req.body.email and req.body.password const claims = { iss: "http://app.dev", // The URL of your service […]

golang tcp socket – 处理多个消息

我有这个Go tcp套接字 package main import ( "fmt" "io" "log" "net" "bytes" ) func main() { l, err := net.Listen("tcp", ":1200") if err != nil { log.Fatal(err) } defer l.Close() for { conn, err := l.Accept() if err != nil { log.Fatal(err) } go func(c net.Conn) { var buf bytes.Buffer io.Copy(&buf, c) fmt.Println("total size:", buf.Len()) s […]

Socket.io简单节点应用程序不工作

我有这个小sockets房间的应用程序,但有一个原因是行不通的。 我试图让用户join房间点击并显示警报,无法找出问题,我有点新的套接字,甚至不能得到这个简单的应用程序工作..这是我的代码 ////app.js var app = require('express')(); var http = require('http').Server(app); var io = require('socket.io')(http); app.get('/', function(req, res){ res.sendFile(__dirname + '/index.html'); }); io.on('connection', function(socket) { socket.on('room', function(room) { socket.join(room); }); }); room = "abc123"; io.sockets.in(room).emit('message', 'what is going on, party people?'); http.listen(3000, function(){ console.log('listening on localhost:3000'); }); ////index.html <!DOCTYPE html> <html> <head> <title>flip</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> […]

Socket.io – 监听器必须是socket.io事件的一个函数

我试图重写我的socket.io服务器,以躲闪“回拨地狱”的事情。 现在我试图听一个事件,而不是传递一个匿名函数作为callback,我想传递一个模块导出的函数。 基本上我想这样做 socket.on('joinChat', myFuncExportedByModule(/* stuff */)); 而不是这个 socket.on('joinChat', function() { /* stuff */ }); 只要我试图调用myFuncExportedByModule,节点发回给我一个“TypeError:监听器必须是一个函数”。 有任何想法吗?

节点 – 红色发送二进制

在询问IoT设置的一些build议后,我刚刚介绍给了Node-Red 。 我有一段JavaScript代码将数据发送到Web套接字。 它发送的代码是HEX格式,并发送到Web套接字。 我试图复制这个使用node-red ,我有一些问题搞清楚哪个节点发送数据。 香草使用Javascript: function connectToSocket() { // Try to connect to the socket try { // Create our socket connection connection = new WebSocket('ws://' + gatewayIP + ':8000'); connection.binaryType = "arraybuffer"; // Failed to create the socket connection } catch (e) { // Log error message logMessage('Failed to connect to socket'); […]

如何使用sockets.io/node.js/javascript转义mysql特殊字符

我正在使用sockets.io插入用户生成的消息到MySQL,但我遇到插入logging撇号的问题。 我一直试图在客户端脚本上使用replace()方法,但是input文本正在传递撇号。 socket.on('refresh feed',function(msg){ str=msg.replace("'", "\'"); alert(str); $("#chtxt").append(str + '<br />'); }); 上面的尝试将提醒没有特殊字符的任何string,但是当它存在时不会提醒。 我相信在邮件发送到套接字后 ,我实际上正在发出警报。 所以,我试着修改这个代码,注意input按键,也注意撇号,也没有运气。 $('#omnibox').keypress(function (e) { var key = e.which; if(key == 13) // the enter key code { $('input[name = "clicky"]').click(); return false; } if(key == 222) // the apostrophe key code { alert('Apostrophe!') return false; } }); 我研究了如何使用javascriptreplaceMySQL的特殊字符,但发现过时的栈解释了为什么客户端validation这不是一个好主意。 没关系。 如果我不应该做这个客户端,那么我需要知道如何在我的server.js节点脚本中执行它。 […]

如何检测net.Socket连接是否死亡 – node.js

背景 我正在通过TCP / IP使用net.Socket与机器进行通信。 我能够build立连接,并发送和接收缓冲区的数据包,这一切都很好。 问题 问题是,如果我手动断开networking电缆从机器上,我的Node.js连接不会触发close事件,我无法知道是否失败! 码 let socket; const start = async function ( config ) { await connecToBarrier( config ) .then( () => console.log( "connected to barrrier" ) ) .catch( err => { throw new Error( `Cannot connect to barrier: ${err}` ); } ); }; const connecToBarrier = function ( connectOpts ) […]

Nodejs TCP套接字在结束时不包含remoteAddress信息

我正在构build一个简单的echo服务器,目的是学习有关使用node.js构buildtcp服务的基础知识,并确定可用的信息。 当我创build服务器时,如下所示,我可以访问有关incomingSocket的信息,如远程地址。 为什么我不能访问closuressocket的信息? 以下是我的代码; 我的评论表明我收到的输出。 var net = require ( 'net' ); var server = net.createServer ( function ( incomingSocket ) { //'connection' listener console.log ( 'Connection from ' + incomingSocket.remoteAddress + ':' + incomingSocket.remotePort + " established." ); incomingSocket.on ( 'data' , function ( data ) { // The incomingSocket.remoteAddress is defined here console.log […]

套接字在nodejs中

我需要在nodejs(例如PHP)中编写套接字。 在PHP语言中,我做了如下的事情: $http_request = "POST $path HTTP/1.0\r\n"; $http_request .= "Host: $host\r\n"; $http_request .= "User-Agent: Picatcha/PHP\r\n"; $http_request .= "Content-Length: " . strlen($data) . "\r\n"; $http_request .= "Content-Type: application/x-www-form-urlencoded;\r\n"; $http_request .= "\r\n"; $http_request .= $data; $response = ''; $fs = @fsockopen($host, $port, $errno, $errstr, 10) if (FALSE == $fs) { die('Could not open socket'); } fwrite($fs, $http_request); […]

socket.io客户端到客户端消息传递

我在使用socket.io的基本客户端(或真正的客户端 – >服务器 – >客户端)时遇到了麻烦。 下面是我现在的代码: io.sockets.on('connection', function (socket) { users.push(socket.sessionId); for(userID in users) { console.log(userID); io.sockets.socket(userID).emit('message', { msg: 'New User Connected succesfully' }); } socket.emit('message', { msg: 'Connected succesfully' }); socket.on('my other event', function (data) { console.log(data); }); }); 从我的理解,应该发送新的用户消息给每个连接的用户(单独,因为我想以后做实际的个人消息)。 相反,我最终只能得到“连接成功”的信息。 我没有从我的服务器或客户端得到任何错误或其他负面指标。 任何想法,为什么io.sockets.socket(userID).emit()不起作用或在其位置使用什么?