标签: websocket

node.js 从控制器调用 ws.send

我想发送一个 websocket,使用 express-ws 从不同的控制器发送出去,而不是通过路由,我在 server.js 中有以下代码:

var SocketController = require('./routes/ws.routes');
var app  = express();
var server  = require('http').createServer(app);
var expressWs = require('express-ws')(app);

app.ws('/', SocketController.socketFunction);
Run Code Online (Sandbox Code Playgroud)

SocketController 看起来像这样:

exports.socketFunction = function (ws, req) {
    ws.on('message', function(msg) {
        console.log(msg);
        ws.send("hello");
    });
}
Run Code Online (Sandbox Code Playgroud)

是否可以调用

ws.send()

来自另一个控制器的事件?我如何获得“ws”对象?

谢谢!

javascript websocket node.js express

1
推荐指数
1
解决办法
1082
查看次数

从服务器向 Chrome 扩展程序发送推送通知的最佳方式?

我正在为分类广告网站制作 chrome 扩展程序。使用 chrome 扩展程序,用户将能够从他们观看的类别/搜索查询中获取最新列表。

我已经在使用 websocket 服务器向用户发送通知,但是这样我必须始终为每个用户打开一个套接字连接。

我的第二种方法是使用Firebase,但这只会在用户单击图标时运行通知(如我所见),我宁愿从我的服务器完成此操作

__

是否有其他可能的解决方案可以在用户不点击图标的情况下向 Chrome 扩展程序发送通知?

google-chrome websocket google-chrome-extension firebase-cloud-messaging

1
推荐指数
1
解决办法
1866
查看次数

如何使用 websockets 从 mysql 获取实时通知更新?

从几天开始,我一直在搜索社交网络或问答网站如何获得实时通知。我开始了解订阅者-发布者模式。我开始知道实时更新是使用 WebSockets 获取的。Websocket 发布一个端点,客户端订阅该端点并不断获取任何更改的更新。
但是我从网上得到的例子都是聊天应用程序。但我的要求是从 MySQL DB 获取实时通知。所以我有几个问题

  1. 我是否使用 WebSockets 来满足正确的要求?或者还有其他一些有效的方法可以满足我的要求?
  2. 如果这对我来说是有效的方法,那么我认为解决这个问题的模式是:WebSocket 将连接到 MySql 并始终查找更改。它还发布了一个端点,我的客户将始终寻找该端点。提交到 Mysql 的任何更改都将反映在 WebSocket 中并导致客户端应用程序。

如果我的模式是对的,我不知道如何将 WebSocket 连接到 Mysql。任何帮助/指导都非常感谢。

更新
经过一些更多的网络搜索:
1. 由于我正在为我的网站创建 Rest Webservices,AJAX 是实现通知功能而不是 WebSockets 的更好方法吗?
2. WebSockets 的实现是否比击中 Rest 端点的 AJAX 调用复杂(因为两者的目的是相同的,以获得通知)?

java mysql spring websocket spring-boot

1
推荐指数
1
解决办法
4016
查看次数

AttributeError: 模块 'websocket' 没有属性 'WebSocketApp' pip

我正在尝试使用 websocket.WebSocketApp,但是它出现了错误:模块“websocket”没有属性“WebSocketApp”

我查看了以前的解决方案,并尝试卸载 websocket,安装 websocket-client,但仍然出现相同的错误。

我的文件的名称是 MyWebSocket,所以我认为它与此无关

有人可以帮我吗?

python pip websocket

1
推荐指数
1
解决办法
6031
查看次数

如何编写可以支持 Tomcat 或 WebLogic 实现的 Java WebSocket Servlet

我正在为一个基于 Java 的大型 web 应用程序设计一个新的聊天模块,该应用程序默认使用 Tomcat,但支持我们的一个客户端的 WebLogic。我一直在研究为此目的使用 WebSocket,但我发现 WebSocket servlet 似乎没有通用接口,例如javax.servlet.http.HttpServlet.

因此,考虑到我可能需要为我希望使用的每个 servlet 容器定义不同的 servlet 实现,我该如何处理我 100% 不知道我在哪个容器中的情况?

java tomcat weblogic websocket

1
推荐指数
1
解决办法
3939
查看次数

使用 http4s 打开 Websocket 连接

我正在运行 http4s WS 示例:https : //github.com/http4s/http4s/blob/master/examples/blaze/src/main/scala/com/example/http4s/blaze/BlazeWebSocketExample.scala

我正在尝试从 google chrome 控制台连接到它:

var ws = new WebSocket("ws://localhost:8080/http4s/wsecho")
ws.send("Hi")
Run Code Online (Sandbox Code Playgroud)

但实际上我看不到任何消息。在控制台日志中我看到

Uncaught DOMException: Failed to execute 'send' on 'WebSocket': Still in CONNECTING state.
    at <anonymous>:1:4
(anonymous) @ VM204:1
VM186:1 WebSocket connection to 'ws://localhost:8080/http4s/wsecho' failed: Connection closed before receiving a handshake response
Run Code Online (Sandbox Code Playgroud)

并且服务器日志不包含错误:

23:12:43 [blaze-nio1-acceptor] INFO  o.h.blaze.channel.ServerChannelGroup - Connection to /127.0.0.1:59777 accepted at Tue Mar 20 23:12:43 GST 2018.
23:12:43 [blaze-nio-fixed-selector-pool-3] DEBUG org.http4s.blaze.pipeline.Stage - SocketChannelHead starting up at Tue Mar 20 23:12:43 GST 2018 …
Run Code Online (Sandbox Code Playgroud)

scala websocket http4s

1
推荐指数
1
解决办法
1569
查看次数

在不创建新实例的情况下重新连接 WebSocket

所以我创建了一个新的 Web 应用程序,它使用 WebSocket 到 Node.JS WebSocket 服务器。现在 Node 服务器完成了它需要的一切工作并且完美地工作。我的问题是浏览器的实现。

我已经查看了许多其他人在答案中给出的库,但我想看看它们是否是一种更好或更干净的方法来做到这一点。

因此,在我的实例中,我基本上创建了一个对象,该对象包装了 WebSocket,然后通过调用 connect( url )使用 setInterval 重新连接,这将创建另一个 WebSocket 实例。

我一直在查看连接和客户端,似乎如果连接关闭,比如服务器出现故障,或者发生了什么事情,看起来有时,在更长的时间内,WebSocket 连接会增加一倍,所以相反每个客户端 1 个连接,它是 2、3 还是 4...?

我有一种感觉,这是因为我每次都在创建一个新的 WebSocket 实例?

代码如下:

// Main Function
function WSWrapper() {

    // Variables
    this.socket = null;
    this.enabled = false;
    this.retry = false;

    // Connect
    this.connect = function(address) {

        // Sets the address
        this.address = address;

        // Creates the websocket connection
        this.socket = new WebSocket(address);

        // On message event handler
        this.socket.onmessage = function(event) {

            // …
Run Code Online (Sandbox Code Playgroud)

browser reconnect websocket

1
推荐指数
1
解决办法
6276
查看次数

chrome devtools 中的 Websocket

目前正在Socket.IO使用 websockets。我有几个关于如何在 chrome devtools 中解释 websockets 的问题:

当我们在 chrome 中有以下输出时:

在此处输入图片说明

问题:

  1. 该方法仍然使用HTTPget 方法动词指定。这是因为这个HTTP协议是用来发起握手的吗?
  2. 如果我们有 4 个 type = websocket 就像在这个例子中一样。我们真的有 4 个 websocket 连接吗?
  3. 一个 websockets 已完成,其他 3 个仍在等待中,这是什么意思?

websocket google-chrome-devtools socket.io

1
推荐指数
1
解决办法
2123
查看次数

Thruway 管理订阅

我尝试通过 Thruway 设置一个可以管理多个组的 websocket 服务器。类似于聊天应用程序,每个客户端可以同时订阅一个或多个,并将消息广播到整个聊天室。我设法用一个古老版本的 Ratchet 做到了这一点,但由于它运行得不是很流畅,我想切换到高速公路。可悲的是,我找不到任何可以管理群组的东西。到目前为止,我作为 websocket-manager 有以下内容,并且客户端正在使用 Autobahn|js (18.x) 的当前版本。

有没有人知道是否可以使用以下内容管理订阅组?

<?php

require_once __DIR__.'/../vendor/autoload.php';

use Thruway\Peer\Router;
use Thruway\Transport\RatchetTransportProvider;

$router = new Router();
$router->addTransportProvider(new RatchetTransportProvider("0.0.0.0", 9090));

$router->start();
Run Code Online (Sandbox Code Playgroud)

php websocket phpwebsocket autobahn thruway

1
推荐指数
1
解决办法
962
查看次数

如何让 JavaScript 执行等待 socket.on 函数响应?

var data = bar();

function bar() {
  var result;

  socket.emit('message', 'test');
  socket.on('msg', function(message) {
    result = message;
  });

  return result;
}
Run Code Online (Sandbox Code Playgroud)

在这里,结果值是undefined。如何将从socket.on函数中检索到的值分配给result变量并返回?

这是我接收socket.io消息事件的另一端。

var io = require('socket.io').listen(server);

io.sockets.on('connection', function(socket, username) {
  socket.on('message', function(message) {
    var result = 'test value'
    socket.emit('msg', result);
  });
});
Run Code Online (Sandbox Code Playgroud)

试图在确认中返回一个对象。

io.sockets.on('connection', function (socket) {
    socket.on('message', function(message, ackCallback) {
        console.log("server received message", message);
        var result = tools.execute(message);  
        console.log(typeof(result)); // result is returned a object
        ackCallback(result);    
    });  
});
Run Code Online (Sandbox Code Playgroud)

PS我试图传递一个简单的对象

var …
Run Code Online (Sandbox Code Playgroud)

javascript jquery websocket node.js socket.io

1
推荐指数
1
解决办法
8461
查看次数