Articles of websocket

React Native与WebSocket不起作用

我听说Socket.io在React Native中没有正常工作,所以我决定使用普通的WebSocket。 我使用node.js来实现WebSocket服务器,并不难。 通过浏览器,我尝试了所有的工作,但与React本地,没有成功。 这些是我试图实现websocket服务器: expression-WS WS 快递只是没有任何错误消息工作。 只是它说没有连接的东西。 所以我把模块改成了ws,这个模块应该是客户端和服务器都需要的,所以我做了。 服务器工作,但是当在AVD上的android应用程序,它说: 需要未知的模块“url”。如果您确定该模块在那里,请尝试重新启动打包程序或运行“npm install”。 所以我完全删除了node_modules目录并重新安装它们,但同样的错误再次出现。 我正在使用节点v6.2.2,并且反应native-cli 1.0.0,react-native 0.33.0。 这是带有ws模块的服务器代码(与ws模块自述文件相同): var WebSocketServer = require('ws').Server; var wss = new WebSocketServer({ port: 3000 }); wss.on('connection', (socket) => { socket.on('message', (msg) => { console.log('Received: ' + msg); }); socket.send('something'); }); 这是客户端: import React, { Component } from 'react'; import { […]

套接字IO:RangeError:超出最大调用堆栈大小

每次客户端连接到我的nodejs服务器,我的服务器崩溃的错误“RangeError:最大调用堆栈大小超过”。 我相信我必须在某个地方有一个recursion的问题,但是它正在逃避我。 我的服务器: require('monitor').start(); 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'); }); var allClients = []; io.on('connection', function(socket){ console.log('user joined: ' + socket.request.connection.remoteAddress + ':' + socket.request.connection.remotePort); socket.address = socket.request.connection.remoteAddress; socket.port = socket.request.connection.remotePort; socket.name = ''; socket.xPos = 0; socket.yPos = 0; //io.emit('new user', […]

通过套接字从c#发送数据到节点的socket.io服务器

我目前正在尝试用我的C#客户端提供的数据来提供socket.io服务器。 但是我不确定如何在服务器上接收消息。 我的服务器代码: const io = require('socket.io')(9000); io.on('connection', (socket) => { console.log('Connected'); } 首先,我不知道我要听哪个事件,但是我无法使用以下客户端(使用Websocket-sharp)将数据发送到我的服务器: private void init() { // start socket connection using (var ws = new WebSocket("ws://localhost:9000/socket.io/?EIO=2&transport=websocket")) { ws.OnMessage += (sender, e) => API.consoleOutput("Message: " + e.Data); ws.OnError += (sender, e) => API.consoleOutput("Error: " + e.Message); ws.Connect(); ws.Send("server"); } } 连接工作,但我怎么接收服务器的消息? 发送不会引发错误,因此我认为它确实有效。

使用socket.io处理socket.emit()错误

我在用 $('btn').click(function() { socket.emit('load more', function (objs) { // do something }); }); 在客户端从服务器获取对象。 但是有时候连接会丢失,没有任何反应。 我怎样才能使error handling,使我可以告诉用户,服务器不回答,而不是让事情发生,因为它是现在? 编辑 所以我想要的是类似的东西 $('btn').click(function() { var emit = socket.emit('load more', function (objs) { // do something }); if (!emit) { console.log("It didn't work. Maybe you lost connection or the server is not running."); } }); 我知道我不能这样做,但是使用承诺还是可以的?

如何在node.js / socket.io中使用removeListener来防止多重触发function

我有一个关于socket.io/node.js的问题。 我发送客户端到服务器,反之亦然,它触发我的function不止一个,即使我只是触发一次。 所以这是我的代码 客户端; for (var x = circles.length – 1; x >= 0; x–) { if (circle.eat(circles[x])) { position = { x: circles[x].position.x, y: circles[x].position.y, r: circles[x].position.r, index: x }; circles.splice(x, 1); socket.emit('eat', position); //Here's the emit to server. } } 服务器端; var events = require('events'); var eventEmitter = new events.EventEmitter(); socket.on('eat', function(data){ circlePosition.splice(data.index, […]

Websockets – 如何编写没有任何节点框架的服务器

我有以下Websocket客户端代码。 我为我的服务器使用nodeJS。 但是在使用这个客户端代码的时候,我closures了连接 我不知道我错过了什么。 使用ws或express框架来写服务器是强制的吗? 如果可能的话,我想写一个不使用这些框架。 // Let us open a web socket var ws = new WebSocket("ws://server.domain.com:8080/pa"); ws.onopen = function() { // Web Socket is connected, send data using send() ws.send("Message to send"); alert("Message is sent…"); }; ws.onmessage = function (evt) { var received_msg = evt.data; alert("Message is received…"); }; ws.onclose = function() { […]

为什么我的websocket服务器没有正确地提供我的HTML页面?

我在一个名为app.js的文件中使用NodeJS创build了一个web套接字的实例,并在端口8080上声明了一个监听器。但是,当我运行命令启动连接时,连接没有build立,也没有logging到控制台。 我试图打开一个Web套接字连接并创build一个谈话服务器。 当我运行我的app.js的createServer()函数不会触发和“新连接”不被logging。 有更多的参数,我需要打开连接? 我是websockets的新手; 任何帮助表示赞赏。 这是我的app.js代码: var ws = require("nodejs-websocket") console.log("testing") var server = ws.createServer(function (conn) { console.log("New connection") conn.on("text", function (str) { console.log("Received "+str) conn.sendText(str.toUpperCase()+"!!!") }) conn.on("close", function (code, reason) { console.log("Connection closed") }) }).listen(8080); 这里是我尝试连接到客户端网站的websocket。 我想发送websocket,不pipeinput到文本框中,然后在input标签中logging返回的string。 <html> <body> <p> Result: <output type=text id="result0" value="" readonly></output> </p> <input type="text" onchange="connection.send(this.value); " /> <script> […]

从PHP启动节点似乎保持PHP运行?

所以开始我build立一个NodeJS应用程序,与网站的前端一起工作。 这是build立的,我想要的是通过PHP启动它。 所以你可以点击保存,然后启动它,如果需要的话。 该应用程序是一个websocket服务器,并将监听一个websocket并处理来自客户端(我的网站的前端)的数据/命令。 现在我用来启动它的代码如下: $command = '/usr/local/bin/node main.js & echo $!'; $processid = shell_exec($command); 但由于某种原因,当我点击保存在前端它只是挂起,并继续加载…但在页面上什么也没有显示? 它创build了我可以看到的过程: lsof -i tcp:8000 和该页面只停止加载时,我杀了该节点正在运行的进程… 我在用: kill -9 <pid> 杀了它。 所以我有点失落,为什么它不在后台运行,然后完成PHP脚本…它只是挂在它? 任何帮助,将不胜感激。 有一点需要注意的是,这一切都是从命令行运行良好,所以文件是一个单独的启动类,如果我通过PHP运行它,并添加一些代码来执行任务它的作品,只有当我从别的什么我调用它有问题吗? 如果有帮助 网站使用的架构是Joomla 3.x,预先感谢。 我在MacBook Air El Capitan上,也需要在Linux CentOS上工作

dynamic更改文本输出 – 反应原生

题 每当我的服务器更新时,如何更新我的文本/图像。 我想要发生的事情 服务器向数据库添加文本 使用Web套接字的服务器消息RN应用程序 RN应用程序从服务器请求数据 服务器从数据库请求数据 服务器将数据发送到RN应用程序 RN应用程序用新数据更新<ScrollView> 发生了什么事 服务器向数据库添加文本 使用Web套接字的服务器消息RN应用程序 RN应用程序从服务器请求数据 服务器从数据库请求数据 服务器将数据发送到RN应用程序 注:我知道服务器将正确的数据发送到RN应用程序,并且应用程序接收数据。 我有console.log编辑它。 数据 以下是从服务器发送到RN应用程序的数据示例: [ { _id: 592f7a5c74376a749e2db211, name: 'world', allowedUsers: [ '114135152003891444692', '114135152003891444692' ], firstUser: '114135152003891444692', imageSrcList: [ 'hello world', 'hello moon', '', 'images/WedMay31201720:38:57GMT-0700(PDT)MILI1496288337083myUserName.jpg' ] }, { _id: 592f8bf462d68f777dd47cfb, name: 'hello', allowedUsers: [ '114135152003891444692', '114135152003891444692' ], firstUser: '114135152003891444692', imageSrcList: […]

运行多个使用Socket.io的服务的最佳方式是什么?

我正在开发一个网站,我将使用微服务。 我将有一个或多个将使用Socket.io的Node.js应用程序。 我试图弄清楚我将如何构build这个。 我可以使用多个Node.js与Socket.io连接到用户,还是会遇到冲突? 我可以使用NGiNX作为UUID的代理来识别发送请求的微服务。 这是否做出敏感? 有没有更好的办法? 或者我也想使用一个Node.js有一个代理接收所有的Socket.io连接,然后创build一个与用户的连接。 但是这似乎增加了networking负载,因为我正在添加另一个微服务。 无论如何,我会喜欢你的意见。