我正在使用react、node.js 和socket.io 构建一个聊天应用程序。
我有以下用于连接和断开连接的钩子
useEffect(() => {
const { name, room } = queryString.parse(location.search)
socket = io(ENDPOINT)
setRoom(room)
// New user joins room
socket.emit('join', { name, room }, (userNamesPresent, error) => {
setUsersPresent(userNamesPresent.userNamesPresent)
})
return () => {
// User leaves room
socket.emit('disconnect')
socket.off()
}
}, [ENDPOINT, location.search])
Run Code Online (Sandbox Code Playgroud)
我像这样在节点中处理它
io.on("connection", socket => {
socket.on("join", ({ name, room }, callback) => {
const { error, user } = addUser({id: socket.id, name, room})
if(error) {
return callback({error})
}
// Emitting a welcome …Run Code Online (Sandbox Code Playgroud) 我正在尝试让 websockets 的邮递员 api 正常工作,但是我什至无法建立连接:
当我尝试建立连接时
ws://localhost:5001/socket.io/
Run Code Online (Sandbox Code Playgroud)
结果是:
Error: Unexpected server response: 400 //for ws
Run Code Online (Sandbox Code Playgroud)
ws://localhost:5001/socket.io/
Run Code Online (Sandbox Code Playgroud)
连接到 socket.io/express/nodejs 服务器的正确 url 字符串是什么?
我被要求在工作中使用 websocket 和 php Ratchet 进行 api 调用。由于我对websocket完全不熟悉,所以我通过google和观看youtube视频来解决这个问题,但是我搜索的越多,我就越觉得用websocket调用api是不可能的。
是我遗漏了什么还是websocket调用api真的不可能?如果可能的话,您能给我举个例子吗?
我知道我可能听起来很尴尬,因为我对网络套接字没有深入的了解,英语甚至不是我的母语,但我真的很绝望,请帮助我
我正在使用 Postman 连接 AWS Appsync订阅: https: //docs.aws.amazon.com/appsync/latest/devguide/real-time-websocket-client.html
具有以下配置:
{“payload”:{“errors”:[{“message”:“NoProtocolError”,“errorCode”:400}]},“type”:“connection_error”}
我尝试创建使用 websockets 并可以向所有连接的客户端广播消息的 fastapi 应用程序。我发现 websockets 不可能做到这一点,但找到了出色的库 - socket.io。但是我不确定如何使用它并将其与我现有的 fastapi 应用程序集成。
这就是我将身份验证信用(映射)添加到 socket.io 中的套接字的方式:
socket = io(
url.toString(),
OptionBuilder()
.setTransports(['websocket'])
.disableAutoConnect()
.enableForceNew()
.enableForceNewConnection()
.setAuth({"token": token})
.build());
Run Code Online (Sandbox Code Playgroud)
尽管使用 POSTMAN 连接时没有这样的身份验证选项。我尝试设置“auth”标头,然后将令牌传递到那里,但这也不起作用。然后我尝试使用 {"token" : TOKEN} 发送“auth”标头,但这不起作用。
已经在下面提到了旧帖子,但其安装websockets 的解决方案在我的 Ubuntu 21.10 中不起作用。
这可能是因为我的 Qt 是 6.2,而可用的库来自 Qt5,即。libqt5websockets5-dev。
如何为 Qt6 正确安装 websocket 模块,以修复以下错误?
项目错误:QT 中的未知模块:websockets
我想构建一个网页来发送和接收主题。我正在使用mosquitto和MQTT.js。
protocol websockets
listener 1884
Run Code Online (Sandbox Code Playgroud)
sudo mosquitto -c /etc/mosquitto/mosquitto.conf并得到
1647529861: mosquitto version 2.0.14 starting
1647529861: Config loaded from /etc/mosquitto/mosquitto.conf.
1647529861: Opening websockets listen socket on port 1884.
1647529861: mosquitto version 2.0.14 running
Run Code Online (Sandbox Code Playgroud)
mqtt.html(完整源代码):
<script src="https://unpkg.com/mqtt/dist/mqtt.min.js"></script>
<script>
const client = mqtt.connect("ws://localhost:1884")
</script>
Run Code Online (Sandbox Code Playgroud)
问题:
00000000: 2002 0005。当我检查蚊子的日志时:我得到了很多1647530429: Client mqttjs_b0e54ea4 closed its connection.我正在运行:
LSB Version: n/a
Distributor ID: ManjaroLinux
Description: Manjaro Linux …Run Code Online (Sandbox Code Playgroud) 我有一个在 Windows Server 2019 中运行的 Mosquitto 2.0.14 代理。我可以使用启用了 SSL 的 mqtts 协议通过端口 8883 连接到它。我还可以在没有 SSL 的情况下通过端口 1883 连接到它。
现在我想使用 Websockets 进行连接。所以我添加了一个监听器:
listener 9001
protocol websockets
allow_anonymous false
password_file C:\mosquitto\password.txt
http_dir C:\mosquitto\http_dir
set_tcp_nodelay true
Run Code Online (Sandbox Code Playgroud)
我也尝试过不使用http_dir和set_tcp_nodelay。我尝试过使用和不使用 SSL 证书。
我在 Windows 防火墙以及 AWS EC2 实例安全组中打开了端口 9001。
但是当我尝试使用以下命令连接到代理时ws://broker.mysite.com:9001,ws://broker.mysite.com:9001/mqtt什么也没有发生。没有错误,没有连接。即使我可以看到使用 WireShark 传入的请求,Mosquitto 也不显示任何日志。我真的被困在这里了。请帮帮我。
编辑:
我尝试使用 MQTTX、MQTT Explorer 和 MQTTBox Chrome 应用程序进行连接。
我正在尝试实现与服务器的 WebSocket 连接(Python 应用程序 <=> Django 应用程序)
整个系统在包含许多任务的大 Asyncio 循环中运行。代码片段只是非常小的测试部分。
我可以随时向服务器发送任何数据,其中许多数据将键入请求内容并等待响应。但我希望有一些“始终运行”的处理程序来处理所有传入的消息。(当 Django 数据库中的某些内容发生更改时,我想将更改发送到 python 应用程序)。
如何包含始终运行的接收器/或向 websocket 添加回调?我无法找到任何解决方案。
我的代码片段:
import asyncio, json, websockets, logging
class UpdateConnection:
async def connect(self,botName):
self.sock = await websockets.connect('ws://localhost:8000/updates/bot/'+botName)
async def send(self,data):
try:
await self.sock.send(json.dumps(data))
except:
logging.info("Websocket connection lost!")
# Find a way how to reconenct... or make socket reconnect automatically
if __name__ == '__main__':
async def DebugLoop(socketCon):
await socketCon.connect("dev")
print("Running..")
while True:
data = {"type": "debug"}
await socketCon.send(data)
await asyncio.sleep(1)
uSocket = UpdateConnection()
loop = …Run Code Online (Sandbox Code Playgroud) websocket ×10
socket.io ×3
javascript ×2
mosquitto ×2
mqtt ×2
postman ×2
python ×2
amazon-ec2 ×1
async-await ×1
aws-appsync ×1
c++ ×1
dart ×1
fastapi ×1
node.js ×1
php ×1
phpwebsocket ×1
qt ×1
qt6 ×1
ratchet ×1
reactjs ×1
receiver ×1
testing ×1
ubuntu ×1