var websocket_url = location.protocol+'//' + document.domain + ':' + location.port + namespace
时间: 2024-06-08 14:06:26 浏览: 15
这段代码是用于构建 WebSocket 的链接地址,其中 `location.protocol` 获取当前页面所使用的协议,`document.domain` 获取当前页面所在的域名,`location.port` 获取当前页面所使用的端口号(如果有的话),`namespace` 是用于 WebSocket 命名空间的变量。
通过将这些变量拼接在一起,可以构建出 WebSocket 的链接地址。例如,如果当前页面使用的协议是 `http`,域名为 `example.com`,端口号为 `8080`,命名空间为 `/chat`,那么构建出来的 WebSocket 链接地址就是:
```
ws://example.com:8080/chat
```
如果当前页面使用的是 `https` 协议,则链接地址应该以 `wss` 开头。
相关问题
RENDERER_NODE_ENV=production RENDERER_VUE_APP_PROXY=true RENDERER_VUE_APP_API_BASEURL=http://192.168.1.2:9999 RENDERER_VUE_APP_WS_BASEURL=ws://192.168.1.2:9999/crm/websocket
这是一个包含环境变量的命令,用于设置一个 Vue.js 应用程序的配置选项。具体来说,它设置了以下选项:
- RENDERER_NODE_ENV:设置应用程序的运行环境为生产环境。
- RENDERER_VUE_APP_PROXY:启用代理功能,用于将 API 请求转发到指定的 API 服务器。
- RENDERER_VUE_APP_API_BASEURL:设置 API 服务器的基础 URL,用于创建 API 请求的完整 URL。
- RENDERER_VUE_APP_WS_BASEURL:设置 WebSocket 服务器的基础 URL,用于创建 WebSocket 连接的完整 URL。
这些选项的值分别为:
- RENDERER_NODE_ENV=production:表示应用程序运行在生产环境中。
- RENDERER_VUE_APP_PROXY=true:表示启用了代理功能。
- RENDERER_VUE_APP_API_BASEURL=http://192.168.1.2:9999:表示 API 服务器的基础 URL 为 http://192.168.1.2:9999。
- RENDERER_VUE_APP_WS_BASEURL=ws://192.168.1.2:9999/crm/websocket:表示 WebSocket 服务器的基础 URL 为 ws://192.168.1.2:9999/crm/websocket。
@app.route('/restruct', methods=['POST']) def restruct(): dch = request.form['dch'] dch_folder = "restr" + dch count = 1 while os.path.exists(os.path.join('D:\cj', dch_folder)): dch_folder = "restr" + dch + "_" + str(count) count += 1 os.makedirs(os.path.join('D:\cj', dch_folder, 'photos')) os.makedirs(os.path.join('D:\cj', dch_folder, 'kmls')) os.makedirs(os.path.join('D:\cj', dch_folder, 'project')) photos_folder = os.path.join('D:\cj', dch_folder, 'photos') kmls_folder = os.path.join('D:\cj', dch_folder, 'kmls') project_folder = os.path.join('D:\cj', dch_folder, 'project') for file in request.files.getlist('files'): filename = file.filename file.save(os.path.join(photos_folder, filename)) dhs = request.form.getlist('dh') for dh in dhs: src_path = os.path.join(r'D:/911kml/', dh + '.xlsx.kml') dst_path = os.path.join(r'D:/cj', dch_folder, 'kmls/', dh + '.xlsx.kml') shutil.copy(src_path, dst_path) subprocess.Popen(["python", "restruct.py", dch, photos_folder, project_folder, kmls_folder])使用python3.6版本的websocket,将这段代码运行中的输出信息,实时发送给前端,给出server.py和client.py
server.py:
```python
import asyncio
import websockets
import subprocess
async def echo(websocket, path):
dch = await websocket.recv()
dch_folder = "restr" + dch
count = 1
while os.path.exists(os.path.join('D:\cj', dch_folder)):
dch_folder = "restr" + dch + "_" + str(count)
count += 1
os.makedirs(os.path.join('D:\cj', dch_folder, 'photos'))
os.makedirs(os.path.join('D:\cj', dch_folder, 'kmls'))
os.makedirs(os.path.join('D:\cj', dch_folder, 'project'))
photos_folder = os.path.join('D:\cj', dch_folder, 'photos')
kmls_folder = os.path.join('D:\cj', dch_folder, 'kmls')
project_folder = os.path.join('D:\cj', dch_folder, 'project')
async for file in websocket:
filename = file.filename
file.save(os.path.join(photos_folder, filename))
dh = await websocket.recv()
src_path = os.path.join(r'D:/911kml/', dh + '.xlsx.kml')
dst_path = os.path.join(r'D:/cj', dch_folder, 'kmls/', dh + '.xlsx.kml')
shutil.copy(src_path, dst_path)
process = await asyncio.create_subprocess_exec(
"python", "restruct.py", dch, photos_folder, project_folder, kmls_folder,
stdout=asyncio.subprocess.PIPE
)
while True:
output = await process.stdout.readline()
if output == b'':
break
await websocket.send(output.decode())
async def main():
async with websockets.serve(echo, "localhost", 8765):
await asyncio.Future() # run forever
if __name__ == "__main__":
asyncio.run(main())
```
client.py:
```python
import asyncio
import websockets
import aiohttp
async def upload_files(dch, files, dh):
async with aiohttp.ClientSession() as session:
async with session.ws_connect('ws://localhost:8765') as ws:
await ws.send(dch)
for file in files:
await ws.send(file)
await ws.send(dh)
async for message in ws:
print(message)
async def main():
dch = 'example'
files = ['example1.jpg', 'example2.jpg']
dh = 'example'
await upload_files(dch, files, dh)
if __name__ == "__main__":
asyncio.run(main())
```