Tag: 套接字

我有一个套接字IO连接问题

我正在反应js和使用套接字和expression来build立一个多人游戏 我得到这个错误: polling-xhr.js:264 GET https:// localhost:3000 / socket.io /?EIO = 3&transport = polling&t = LqjOuC2 net :: ERR_CONNECTION_CLOSED 我谷歌这个错误5倍,并调整我的import应用程序,套接字,快递和http, Server.js var app = require('express')(); var http = require('http').Server(app); const port = process.env.PORT || 3001; http.listen(port, ()=> {console.log("+++Express Server with Socket Running!!!")}) var io = require('socket.io').listen(http); …. …. 前端 import React, { Component } from 'react'; […]

swift – 我可以连接到socket.io服务器,但我不能发射事件

我是初学者socket.io现在我可以连接到套接字服务器和服务器login我的连接,但我不能发送事件到服务器这里是我的代码: let socket = SocketIOClient(socketURL: URL(string: "http://xxxxxxx:3000")!) socket.connect() let username = "yay" socket.emit("add", username)

socket io如何将事件发送给好友?

嗨,我正在与节点js聊天,我有一个问题。 聊天是全球性的,没有房间,但用户只能看到和写在他们的好友列表中的用户。 所以当他们连接到服务器时,他们也会发送用户ID和好友列表作为数组。 在服务器我有一个全球variables与在线用户。 现在,哪一个最好的方式把事件发布给好友列表中的用户呢? 这是我现在的代码: var express = require('express'); var cors = require('cors'); var crypto = require('crypto'); var app = express(); var port = process.env.PORT; var mongoose = require('mongoose'); var jwt = require('jsonwebtoken'); var socketio = require('socket.io'); var confdb = require('./lib/config-db.js'); var conf = require('./lib/config.js'); var db = require('./lib/chat-db'); var whitelist = []; var […]

杀死一个“个性化”的间隔

我制作了这个系统,用户可以login到我的网站,玩一个需要间隔时间的游戏。 当用户完成播放,我基本上想要杀死间隔。 虽然一切似乎都运行良好,但杀间隔时间有点不妥。 这里是问题每当一个用户完成播放的时间间隔被杀害,不仅为用户播放,而且为每个人 。 这可能是因为我正在为这个时间间隔分配一个variables,而当一个用户完成一个游戏时,我正在杀死这个interval ,那么我是对的,那么它会杀死其他的时间间隔呢? 这里是我为这个问题写的一些代码, var user; //this is a variable that has all info about the user. (its not usually empty) var usersPlaying = []; socket.on('game', function(game) { if(game.type == "start"){ usersPlaying.push({ user_id: user.id }); var game = setInterval(function(){ if(findUser(user.id) !== undefined){ console.log('Second passed!'); }else{ clearInterval(game); //stop the interval } }, […]

从UWP发送消息到socket.io

我有一个简单的节点socket.io服务器和一个C#UWP应用程序。 我想从应用程序发送简单的消息到服务器,但似乎消息不是在正确的格式/协议/东西。 我试图让格式正确,但我不知道该怎么做。 app.js io.on('connection', function(socket){ console.log('CLIENT CONNECTED') socket.on('message', function (msg) { console.log('socket msg') console.log(msg) } 当我从socket.iotesting者发出消息时,控制台显示 socket msg dwadwadwada (就像它应该) debugging输出: engine:socket packet +1ms socket.io-parser decoded 2["message","dwadwadwada"] as {"type":2,"nsp":"/","data":["message","dwadwadwada"]} +0ms socket.io:socket got packet {"type":2,"nsp":"/","data":["message","dwadwadwada"]} +0ms socket.io:socket emitting event ["message","dwadwadwada"] +0ms socket.io:socket dispatching an event ["message","dwadwadwada"] +0ms 现在,如果我从我的UWP应用程序发送一个string(为简洁起见删除了尝试/捕获和exception处理) string msg = "test"; await sendMessage(msg); private […]

在socket.io中检索获取请求参数

想象一下,我有服务器上的socket.io ,我正在监听连接: io.on('connection', function (socket) { //…..How do I get the www.myserver.com:3000/address=123&name=John string here? … } 现在,想象一下浏览器中的客户端types如URL: www.myserver.com:3000/address=123&name=John 现在, 从上面的connection事件处理程序中,我如何获得URL客户端types? 我想在socket.handshake使用“referer”属性。 这是正确的方法吗?

当服务器将事件发送到特定客户端时,不要使用Angular2来运行socket.io-client(不同的angular2服务)

我创build了两个服务send-message.service.ts import { Injectable } from "@angular/core"; import * as io from 'socket.io-client'; @Injectable() export class SendMessageService { private url = 'http://localhost:4000'; private socket = io(this.url); saveUser(user) { this.socket.emit('joining-to-chat', user); } sendMessage(data) { this.socket.emit('send-message', data); } } 和receive-message.service.ts import { Injectable } from "@angular/core"; import { Subject } from 'rxjs/Subject'; import { Observable } from […]

无法使socket.io在HTTPS上工作

我正在使用简单的socket.io 2.0.3服务器没有快递或任何类似的在我的Laravel应用程序中运行简单的聊天function。 一切都很好,直到我决定将网站切换到HTTPS。 现在socket.io拒绝连接(ERR_CONNECTION_CLOSED)。 这是我最简单的设置: server.js: var io = require('socket.io')(8080, { origins : //some stuff }); HTML文件 <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.0.3/socket.io.js"></script> var socket = io(':8080'); //more stuff 我在服务器文件夹,intermediate.crt,domain.com.crt和domain.com.key都需要证书文件 有人可以帮助最简单的例子如何使这项工作在https上? 提前致谢! 编辑:需要可能的解决scheme,不使用Express。

Socket.io客户端事件侦听器在服务器重新启动并重新连接后不侦听

Socket.io客户端很好地工作,直到服务器断开/重新启动。 一旦服务器恢复正常,它就会重新连接,但是当发生事件时,我的所有客户端监听器都不再触发。 网上似乎没有很多,但从我迄今为止阅读的内容来看,这里是我试过的: 将所有.on监听器包装在一个函数中,然后每次客户端库重新连接/连接时调用该函数。 把我所有的io实例包装在一个函数中,每次我调用它时都会返回一个新的实例。 跟踪服务器上的所有房间,然后重新连接所有房间。 创buildio实例时将'multiplex'设置为false。 这些事情都没有给我带来好运。 这里是最相关的github问题,没有答案: https : //github.com/socketio/socket.io/issues/1633 看起来,因为我的客户端上有所有的房间名称,所以我可以在不使用Redis之类的情况下重新连接这些房间。 谢谢。 更新:经过一天的尝试许多不同的策略,似乎为每个命名空间创build.on('连接',Fn)侦听器将使客户端和服务器重新正确连接 io.of('namespace').on('connection', function(){ console.log("namespace connected") }); 如果你没有这个,socket.io仍然可以正常工作和连接,但是它不会与正在工作的客户端监听器重新连接。 我想这应该是在图书馆更新的东西。 无论如何,关于我的特殊问题,我仍然留下一个问题: 我需要能够处理dynamic命名空间 io.of('namespace-<id>').on('connection', function(){ console.log("namespace id: <id> connected") }); 如果我有通配符支持,比如 io.of('namespace-*').on('connection', function(){ console.log("namespace id: <id> connected") }); 完全适合我的情况。 我浏览过不同的图书馆,例如: https://www.npmjs.com/package/socket.io-events 但它只支持事件的通配符和正则expression式,而不支持命名空间。

HTTP套接字closures连接已closures

我收到这个错误表单提交节点js。 只有在发布后上传的问题,另一个商家上传已成功完成,但只有在这一部分的问题。 为什么我在唯一的上传后得到连接closures问题 var form = new FormData(); form.append('data', JSON.stringify(req.body.request)); form.append('file', fs.createReadStream('uploads/' + rename_f)); form.submit({ protocol: config.phpHostProt, hostname: config.phpHost, port: config.phpHostPort, path: '/api/addPost', headers: { 'Authorization': 'Bearer ' + authToken }, agent: false }, function (err, res) { if (err) { logger.error(JSON.stringify(err)); reject(err); } else if (res.statusCode !== 200) { logger.error(res); reject(res.statusMessage); } else { […]