我实际上正在尝试在两个不同的应用程序之间建立实时连接。我找到了很多关于如何使用socket.io进行聊天的教程,但这并没有真正的帮助,因为它是同一应用程序在多个窗口中重复的。
我正在为本地开发中的英雄联盟制作一个选配禁令。我的第一个想法是一方面显示空的叠加层,另一方面创建一个界面手动对其进行更新。在我的情况下,Socket.io似乎是正确的选择,因为它可以提供新数据而不必重新加载组件。
这是我在两个应用程序中写的:
const express = require('express');
const socket = require('socket.io');
// App setup
const app = express();
const server = app.listen(4200, function () {
console.log('Listening to requests on port 4200')
});
// Static files
app.use(express.static('public'));
// Socket setup
const io = socket(server);
io.on('connection', function (socket) {
console.log('Made socket connection', socket.id);
socket.on('change', function (data) {
io.sockets.emit('change', data);
});
});
但是我无法连接它们,因为它们必须监听相同的端口。我究竟做错了什么? (请原谅我的英语不好和缺乏语法,我在这里尽力而为。:p)
答案 0 :(得分:1)
我当然不是网络编程专家,但是据我所知,您需要有一个监听应用程序(后端)和另一个要连接的应用程序(客户端)。然后,您定义后端接收的所有数据(消息)会发生什么(例如,将接收到的消息发送到同一聊天室中的所有客户端)。
如果我正确地假设您正在尝试连接两个监听应用程序?
对“ nodejs套接字服务器客户端示例”的简单google搜索显示,此https://www.dev2qa.com/node-js-tcp-socket-client-server-example/可能希望朝这个方向进行研究
答案 1 :(得分:1)
u可以尝试这种方式
var express = require('express');
var socket = require('socket.io');
// App setup
var app = express();
var server = app.listen(8080, () => {
console.log('App started')
})
// Static file
app.use(express.static('public'))
// Socket SetUp
var io = socket(server);
io.on('connection', socket => {
console.log('made the connection')
socket.on('chat',data => {
io.sockets.emit('chat',data)
});
socket.on('typing',data => {
socket.broadcast.emit('typing',data);
});
})
创建另一个文件并
var socket = io.connect('http://localhost:8080')
// Elenment
var message = document.getElementById('message');
handle = document.getElementById('handle');
btn = document.getElementById('send');
output = document.getElementById('output');
feedback = document.getElementById('feedback');
// Emit Events
btn.addEventListener('click', () => {
socket.emit('chat', {
message: message.value,
handle: handle.value
})
})
message.addEventListener('keypress', () => {
socket.emit('typing', handle.value)
})
socket.on('chat',data => {
feedback.innerHTML = '';
output.innerHTML += '<p><strong>' + data.handle +': </strong>' +
data.message + '</p>'
})
socket.on('typing', data => {
feedback.innerHTML = '<p><emp>' + data + ' is typing a message... </emp></p>'
})
详细信息在此node socket chat app