jjzjj

javascript - 只从 node.js 中的套接字读取前 N 个字节

varserver=net.createServer(function(c){//...c.on('data',function(data){//Thedataisalldata,butwhatifIneedonlyfirstNanddonotneedotherdata,yet.c.write(data);});//...};有没有办法只读取定义的数据部分?例如:c.on('data',N,function(data){//ReadfirstNbytes});其中N是我期望的字节数。所以回调只得到M个字节中的N个。解决方案是(感谢mscdex):c.on('readable',func

javascript - 在 Nodejs 中读取原始 http 消息

我正在使用http.request函数发送一个http请求,我想像阅读文本一样阅读整个http响应;即原始的http协议(protocol)文本。可能吗?我已经编写了以下代码,但它不起作用。//Setuptherequestconsole.log('Sendingrequest');varpost_req=http.request(post_options,function(res){res.setEncoding('utf8');console.log('ResponsestatusCode:'+res.statusCode);//res.on('data',function(chu

javascript - 简单发射的套接字和 volatile 发射的套接字有什么区别?

这是下面问题的后续问题;WhydoesthisupdateSockets()functionacceptaparameterthatlooklikethis?在下面的代码中,套接字使用volatile来发射。varupdateSockets=function(data){//addingthetimeofthelastupdatedata.time=newDate();console.log('Pushingnewdatatotheclientsconnected(connectionsamount=%s)-%s',connectionsArray.length,data.time);

javascript - 类型错误:无法读取未定义的属性 'emit'

问题是,每当我尝试触发“this.io.emit”事件时,都会发生TypeError。它仅在我在“socket.on”block内写入此语句“this.io.emit”时给出,否则,如果我将其写入此block外,它不会产生错误。这是调用其他库的主要server.js文件:constexpress=require('express'),http=require('http'),socketio=require('socket.io');classApp{constructor(){this.port=process.env.PORT||81;this.host=`localhost`;t

javascript - socket.io 在服务器离线时发出

我正在使用socket.iov1.3.6(nodejs)并尝试使用以下代码从浏览器发出数据。客户端代码varsocket=io.connect('http://something.com:3300/');functionsendMessage(message){ socket.emit('message',message);}服务器代码vario=require('socket.io').listen(3300);io.sockets.on('connection',function(socket){messageHandler(socket);});functionmessageHa

javascript - 在 ec2 实例上使用 socket.io 时出现 "websocket connection invalid"错误?

我有一个使用node.js的express和socket.io编写的网络应用程序,该应用程序在本地主机上运行良好,但是当我推送到我的ec2服务器时,它连接大约20秒然后断开连接,然后再次连接等...给我Node控制台上的错误作为warn-websocketconnectioninvalidinfo-transportend服务器app=express()server=http.createServer(app)io=require('socket.io').listen(server)客户socket=io.connect()我知道问题不在我的代码上,因为我在本地主机上对Web应用程序

javascript - Socket.IO 消息不更新 Angular 变量

我有一个socket.io客户端-服务器设置,在客户端上运行AngularJS。//Server.jsvario=require('socket.io')(server);io.on('connection',function(socket){socket.on('message',function(msg){//console.log(msg);console.log(msg);io.emit('message',msg);});});正如观察到的那样,它本质上会发出一个message事件,其中的数据存储在变量msg中。然后我有以下客户端代码。varcontainer=angular

javascript - socket.io 分配自定义 socket.id

我跟踪阵列中连接的每个用户的列表。所以如果有新的连接,它会检查用户是否已经在列表中,如果他已经在列表中,则将他们的socket.id分配给列表中相应的socket.id,否则就添加它们到列表中。这是为了防止同一用户在尝试进行多登录时被计为2个用户。Object.keys(client).forEach(function(key){if(client[key].id==data.id){is_connected=true;socket.id=key;}});我在处理尝试多登录的用户发送/接收的消息/聊天时没有问题。socket.on('chat',function(msg){vardat

javascript - 在socket io中的事件回调函数中获取事件名称

我正在构建一个既充当套接字客户端又充当服务器的中间Node服务器,我想监听后端服务器事件,然后在处理后将事件转发给客户端(浏览器)。varsocket=require('socket.io'),client=require('socket.io-client');socket.on('event_name',function(data){/*Logictoprocessresponseandrelaytoclient*/client.emit(this.event,data);//HowcanIgetnameoftheouterevent?});我想在回调中获取event_name值。

javascript - 如何使用 Node.js 在 JavaScript 模块文件之间使用事件处理程序?

我目前正在使用socket.io来发出和监听客户端JavaScript文件和Node.js服务器文件之间的事件,但我希望能够发出和监听Node服务器和它的模块之间的事件。我的想法是它看起来像这样:Node服务器:varmodule1=require('./module1');//Somecodetolaunchandruntheservermodule1.emit('eventToModule');module1.emit('moduleResponse',function(moduleVariable){//serveractionbasedonmoduleresponse}模块文件